Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Проблемма соединения с MySQL 4.0.18
Проблемма соединения с MySQL 4.0.18
Posted: 2007/10/18 23:22
 
ADConnection1 - в Properties установлено
CharacterSet=cp1251

При попытке подключения к сабж'у выдается ошибка '... unknown system variable NAMES' - действительно, 4.0.18 сервер не понимает команды
set names ...
а в модуле daADPhysMySQLWrapper.pas при подключении вызывается SetCharacterSetName в которой написано
...
iRes := FLib.mysql_set_character_set(FPMySQL, PChar(AValue));
if iRes <> 0 then
Query('SET NAMES ' + AValue);
...

я понимаю - убрать данный запрос для версий < 4.1 не проблемма, вовпрос в другом - как установить чарсет для подключений к версии <4.1 ?

Post edited by: balrog, at: 2007/10/18 23:26
Re:Проблемма соединения с MySQL 4.0.18
Posted: 2007/10/18 23:57
 
Привет

Откройте daADPhysMySQLWrapper и замените метода на:


 procedure TMySQLSession.SetCharacterSetName(const AValueString); var   iResInteger; begin   iRes := -1;   if Assigned(FLib.mysql_set_character_setthen begin {$IFDEF AnyDAC_MONITOR}     if Tracing then       Trace(smysql_set_character_set, ['cs_name'AValue]); {$ENDIF}     iRes := FLib.mysql_set_character_set(FPMySQLPChar(AValue));   end;   if iRes <> 0 then     if ADVerStr2Int(ServerInfo) >= mvMySQL040100 then       Query('SET NAMES ''' AValue '''')     else       Query('SET CHARACTER SET ' AValue);   FCharsetName := AValue; end;



удачи,
Дмитрий
Re:Проблемма соединения с MySQL 4.0.18
Posted: 2007/10/19 00:09
 
Ага, я уже пробовал нечто подобное, но при попытке сделать set character set cp1251, сервак возвращал ошибку unknown character set :'cp1251'
Re:Проблемма соединения с MySQL 4.0.18
Posted: 2007/10/19 00:15
 
Мне другого предложить нечего. Если не поддерживает, значит не поддерживает. Скорее всего необходимо пересобрать mysqld. На эту тему лучше обратиться на форум на sql.ru / mysq.com и к документации.

Удачи,
Дмитрий
Re:Проблемма соединения с MySQL 4.0.18
Posted: 2007/10/19 00:27
 
попробовал просто убрать

if iRes <> 0 then
if ADVerStr2Int(ServerInfo) >= mvMySQL040100 then
Query('SET NAMES ''' + AValue + '''')
FCharsetName := AValue;

как ни странно получилось - все в норме и возвращает читаемую кирилицу.
спасибо за ответ