| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Illegal mix of collations |
| Автор: VasyaVasin 20.12.2007, 12:29 |
| Здравствуйте, проблема в следующем. Ставлю MediaWiki (http://www.mediawiki.org/wiki/MediaWiki/ru), процесс установки проходит, создаётся БД, но при запросе к index.php выдаёт следующая ошибка: Обнаружена ошибка синтаксиса запроса к базе данных. Последний запрос к базе данных: (SQL запрос скрыт) произошёл из функции «Article:ageData». MySQL возвратил ошибку «1267: Illegal mix of collations (cp1251_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '=' (mysqlserver)». Насколько я понял проблема с конфликтом кодировок. Я нашёл решение этой проблемы - создание в phpMyAdmin БД с нужным мне чарсетом. Но хостер (инфобокс) не даёт доступ к созданию БД с помощью phpMyAdmin, а только к редактированию. В общем прошу подсказать что сделать? По идее с крипте MediaWiki там где она подключается в базе, нужно прописать кодировку, но где именно я так и не нашёл. Заранее спасибо. |
| Автор: Feldmarschall 20.12.2007, 12:39 |
| не обязательно создавать БД с нужным чарсетом. Чарсет можно указывать при создании таблиц Добавлено через 1 минуту и 27 секунд А, точно! Можно ведь попробовать поменять умолчания для БД. Вот тут http://phpfaq.ru/charset хорошо написано |
| Автор: VasyaVasin 20.12.2007, 12:58 |
| При запросе set names cp1251 выдаётся, что база в нужной мне кодировке. MySQL-кодировка: UTF-8 Unicode (utf8) Сопоставление соединения с MySQL: cp1251_bin Т.е. получается, что кодирвока по умолчанию стоит? |
| Автор: Feldmarschall 20.12.2007, 13:10 |
| при запросе set names ничего вообще не выдается. Получается, что кодирвока по умолчанию стоит. только непонятно, какая тебе с того разница. |
| Автор: VasyaVasin 20.12.2007, 13:16 |
| Тогда получается, что я жутко туплю или чего-то не понимаю... Как мне добиться нужного результата? |
| Автор: Feldmarschall 20.12.2007, 13:24 |
| Я, вообще-то, ссылку давал. |
| Автор: VasyaVasin 20.12.2007, 22:27 |
| Проблема решилась проще. в коде скрипта, в том месте, где он коннектица к базе добавил 3 строчки: mysql_query ("set collation_connection='latin1_bin'"); mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); |
| Автор: Feldmarschall 20.12.2007, 23:01 |
| Очень странное решение. Думается мне, будут ещё проблемы. |