Знаю, тема поднималась много раз уже… однако нужна помощь.
1) Дано MacOS X 10.6 x86, 64-bit с MAMP; Parser 3.4.1;
2) В библиотеке lib лежат: libparser3mysql.so и скаченный libmysqlclient.18.dylib (скачал с mysql.com/downloads/mysql). Пути к файлам в конфиг файле указаны верно. Тестовая страница их видит. До этого пробовал разные libmysqlclient.so файлы. Та же беда.
3) Логин, пароль, хост, протокол, имя БД указано верно. Проверил 5 раз.
Тем не менее ошибка при подключении БД: На тестовой странице: Can't connect to SQL server. Probably wrong username/password combination or incorrect connection string.
Десять раз перечитал →
В чем ошибка? За что меня наказывает Бог? На второй вопрос можно не отвечать :-/
... что и куда кладете, что прописано в конфигах про библиотеки, проверьте битность Парсера, libparser3mysql, libmysqlclient. Кроме того интересно какой командой проверяли работоспособность базы из консоли.
Пробовал и с libmysql.16.0.0.dylib не работает, тем не менее оставил его…
К слову, файл из скаченного с mysql.com архива нужно ведь просто скопировать в свою директорию? Или там какую-нибудь хитрожопую инсталляцию ему нужно делать?
В Библии (FAQ) написано: ++++++++++++++++ Допустим, данные в вашей базе хранятся в кодировке UTF-8, а сайт работает в кодировке windows-1251, в этом случае нужно использовать следующую строку подключения: mysql://user:password@host/database?charset=cp1251 ++++++++++++++++ У меня же: $response:charset: WINDOWS-1251 $request:charset: WINDOWS-1251 А БД в utf8.
2) Библиотека — check! ++++++++ $confdir[^file:dirname[$filespec]] $charsetsdir[$confdir/charsets] $sqldriversdir[$confdir/lib] ... mysql $sqldriversdir/libparser3mysql.so $sqldriversdir/libmysql.16.0.0.dylib ++++++++ И вот так: $SQL.connect-string[mysql://root:root@localhost:8889/parser?charset=cp1251]
3) БД — check! Взял и закинул обычный test.php в корень. Запустил. Все работает: создал 10 таблиц в базе parser. ++++++++ <? Error_Reporting(1+2+4); define("DBName","parser"); define("HostName","localhost"); define("UserName","root"); define("Password","root"); if(!mysql_connect(HostName,UserName,Password)) { echo "Не могу соединиться с базой ".DBName."!<br>"; exit; } @mysql(DBName,"create table test(id int,a text)"); // Вставляем в таблицу 10 записей for($i=0; $i<10; $i++) { $id=time(); mysql(DBName,"insert into test(id,a) values($id,'Строка $i!')"); } ?>
$SQL[$.drivers[^table::create{protocol driver client
mysql $sqldriversdir/libparser3mysql.so $sqldriversdir/libmysqlclient.16.dylib
}]]
Только в хитропопость в том, что если в .htaccess указать AddHandler parsed-html html Action parsed-html /cgi-bin/parser/parser3.4.1.cgi то браться парсер, настройки и либы будут из /Applications/MAMP/cgi-bin/parser, а не из ../cgi-bin/parser/ Но на это надо обращать внимание на virtualhost, на localhost оно как ты понимание родное.
Вообще я припоминаю, что когда ставил MAMP были траблы с настройкой базы и долго эксперементировал с libmysql.16.dylib. Насколько я помню у меня был затык именно с ним и его местораположением.
Еще как то можно понять использование win-1251 если ты на IIS. Изыди нечистая! Аминь. Но если ты на Маке...Алилуйяяя!! У которого utf-8 родная стихия и сервер твой собрат юникса, то забудь об пережитке в win-1251 как о страшном видении.
Просто работай в utf-8 и будет тебе успокоение.
$request:charset[utf-8]$response:charset[utf-8]
и даже неверные сервера, присылающие данные в неверных кодировках, не будут проблемой для тебя.
Все заработало. В довершении пришлось использовать путь к сокету: $SQL.connect-string[mysql://root:root@[/Applications/MAMP/tmp/mysql/mysql.sock]/p3test] +++++ $SQL.connect-string[mysql://root:root@localhost/p3test] Работать отказывается.
Спасибо огромное. Пойду свечечку за Ивана Сергеева поставлю.
Можете спокойно использовать последнюю версию: Основные изменения в новой версии касаются автокомплита операторов, методов и пр. радостей парсера. Например, набрав ^h получишь подсказку автокомплита: ^hash ^hashfile Выбрав первый пункт и нажав Enter, автокомплит допишет строку до ^hash:: и предложит: create sql Выбрав например sql, автокомплит завершит конструкцию и получится:
А что мешает все перекодировать в utf8 или в cp1251. У себя на сайте все поставил на utf8 удобно и поисковики видят все нормально. Перекодировку можно сделать при помощи PHP Expert Editor, для жителей бывшего союза она бесплатная...