Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Illegal mix of collations 
:(
    Опции темы
VasyaVasin
  Дата 20.12.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Здравствуйте, проблема в следующем. Ставлю 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 там где она подключается в базе, нужно прописать кодировку, но где именно я так и не нашёл.

Заранее спасибо.
PM MAIL   Вверх
skyboy
Дата 20.12.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(VasyaVasin @  20.12.2007,  11:29 Найти цитируемый пост)
Насколько я понял проблема с конфликтом кодировок. 

да. в одном(а может - и не в одном) запросе используется сравнение полей из двух разных таблиц, с разными кодировками. Вот СУБД и не знает, как сравнить две строки,каждая из которых закодирована по-своему.
Или же константа в запросе имеет кодировку по умолчанию, которая не совпадает с кодировкой поля, с которым происходит сравнение.
Цитата(VasyaVasin @  20.12.2007,  11:29 Найти цитируемый пост)
По идее с крипте MediaWiki там где она подключается в базе, нужно прописать кодировку

SET NAMES. впрочем, если бы кодировка подключения была бы неверно установлена, у тебя скорее возник бы вопрос о том, что текст выводится не в той кодировке и выглядит нечитаемым.
Цитата(VasyaVasin @  20.12.2007,  11:29 Найти цитируемый пост)
Но хостер (инфобокс) не даёт доступ к созданию БД с помощью phpMyAdmin, а только к редактированию.

зачем тебе создавать БД? тебе же таблицы в существующей БД создавать надо. А кодировка по умолчанию может быть изменена и для БД, и для отдельной таблицы. Только, кажется мне, проблема у тебя в другом.
PM MAIL   Вверх
Feldmarschall
Дата 20.12.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



не обязательно создавать БД с нужным чарсетом. Чарсет можно указывать при создании таблиц

Добавлено через 1 минуту и 27 секунд
А, точно! Можно ведь попробовать поменять умолчания для БД.
Вот тут http://phpfaq.ru/charset хорошо написано
PM   Вверх
VasyaVasin
Дата 20.12.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



При запросе set names cp1251 выдаётся, что база в нужной мне кодировке.

MySQL-кодировка: UTF-8 Unicode (utf8) 
Сопоставление соединения с MySQL: cp1251_bin

Т.е. получается, что кодирвока по умолчанию стоит?
PM MAIL   Вверх
Feldmarschall
Дата 20.12.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



при запросе set names ничего вообще не выдается.

Получается, что кодирвока по умолчанию стоит. только непонятно, какая тебе с того разница.
PM   Вверх
VasyaVasin
Дата 20.12.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Тогда получается, что я жутко туплю или чего-то не понимаю...
Как мне добиться нужного результата? smile
PM MAIL   Вверх
Feldmarschall
Дата 20.12.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Я, вообще-то, ссылку давал.
PM   Вверх
VasyaVasin
  Дата 20.12.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Проблема решилась проще.

в коде скрипта, в том месте, где он коннектица к базе добавил 3 строчки:

mysql_query ("set collation_connection='latin1_bin'");

mysql_query ("set character_set_client='cp1251'");

mysql_query ("set character_set_results='cp1251'");
PM MAIL   Вверх
Feldmarschall
Дата 20.12.2007, 23:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Очень странное решение.
Думается мне, будут ещё проблемы.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0792 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.