Перейти к контенту
  • 0

Проблема с кодировкой при обновлении с 2.1.7 до 2.3.*


Eduard

Вопрос

Решаем проблему с кодировкой базы данных, в случае если Вы работаете с кодировкой latin1

 

Ошибка часто выражается появлением вопросов за место стандартного текста на форуме, а так же данным кодом, после окончания работы мастера обновления.

 

SELECT id FROM ipb_faq WHERE title = 'Преимущества регистрации'

Сообщение сервера: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation '='
Код ошибки: 1267
Время: Thursday 02nd of August 2007 02:37:04 PM

Желательно проделать эту операцию перед запуском мастера обновления форума.

 

Открываем файл: ips_kernel/class_db.php

Примерно в 112 строке заменяем: 'mysql_codepage' => 'cp1251' ,

На: 'mysql_codepage' => 'latin1' ,

 

После этого запускаем файл обновления: ваш_сайт/upgrade/index.php

 

В самом начале форум сам должен определить кодировку latin1 и обновить форум в нормальном режиме.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Забавно, ответ а-ля "сам дурак" всегда смотрелся высокоаргументированно.

когда стоял форум 2.1.7 база была в колировке latin1, и только решение описанное выше помогло нормально проапдейтить ipb до 222

Уж можете поверить, что я при апдейте указывал нужную кодировку

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Всё было бы весьма весело, если не было бы так грустно.

Ещё раз повторяю, что данное решение не высосано с пальца и работает.

 

Руководству рекомендую быть внимательным и не прописывать используемую ими кодировку windows 1251 по умолчанию. Если она используется Вами, то это не значит что всеми остальными.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Бред заключается в том что здесь описано изменение в файлах самого форума, а именно классов! Решение высосано из пальца и выглядит шаманским танцем с бубном.

 

Это есть ПЛОХО, Вы не до конца поняли где вообще изменяется кодировка. А изменяется она в conf_global.php

 

Путем добавления (изменения) строки

$INFO['mysql_codepage']			=	'latin1';

 

И вообще, хранение русских текстов в англоязычном представлении чревато глюками в работе форума с данными из базы.

 

http://www.zulus.ws/2006/12/05/ipb-mysql-charset-conversion/

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Решение высосано из пальца и выглядит шаманским танцем с бубном.
Решение найдено лично, путём анализа классов работы с базой, и проверкой кодировки по умолчанию. Причиной тому явилось молчание суппорта которые не смогли найти ответа, по сей день...

 

Это есть ПЛОХО, Вы не до конца поняли где вообще изменяется кодировка. А изменяется она в conf_global.php
Вот именно! Это было первое на что обратил внимание, по умолчанию кодировка не прописывалась в данный файл вообще.

 

И вообще, хранение русских текстов в англоязычном представлении чревато глюками в работе форума с данными из базы.
Работаю с кодировкой базы данных latin1 очень длительное время, более 5 лет, и ничего подобного ещё не слышал. К тому же данный тип форума работает с кодировкой latin1 более 1 года на всех наших проектах. Не забываем кем разрабатывается оригинальный IPB, по крайней мере не в windows-1251 :D

 

Не вижу никакой необходимости, так же не рекомендую.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

>> Работаю с кодировкой базы данных latin1 очень длительное время, более 5 лет, и ничего подобного ещё не слышал.

 

ну вот уж поверьте :D

С кодировкой latin1 не всегда правильно делаются преобразования в запросах, связанные с ORDER BY и GROUP BY

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Бред заключается в том что здесь описано изменение в файлах самого форума, а именно классов! Решение высосано из пальца и выглядит шаманским танцем с бубном.

 

Это есть ПЛОХО, Вы не до конца поняли где вообще изменяется кодировка. А изменяется она в conf_global.php

 

Путем добавления (изменения) строки

$INFO['mysql_codepage']			=	'latin1';

 

И вообще, хранение русских текстов в англоязычном представлении чревато глюками в работе форума с данными из базы.

 

http://www.zulus.ws/2006/12/05/ipb-mysql-charset-conversion/

 

Прочитав эту тему, я при upgrade сделал именно по Вашему способу. т.е. просто перед запуском upgrade - добавил в conf_global.php эту строку

$INFO['mysql_codepage']			=	'latin1';

 

и больше ничего в коде не менял. Все прошло как по маслу. В принципе при upgrade я так понял эта строка и сама добавляется, но несколько позже, чем возникает эта ошибка. Спасибо всем !

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А у меня все апгрейдилось хорошо, только вот в профилях когда оставляешь комментарий вместо него "??????". Все остально отлично. А, ну еще в админе файлы-подсказки тоже отображаются как "???????????"
Ссылка на комментарий
Поделиться на других сайтах

  • 0
У меня ситуация была сложнее, некоторые таблицы были в latin1_general_ci а некоторые в cp1251_bin, 2.1.7 вроде как работал отлично пока не коснулось обновления. В итоге конвертация прошла успешно, если не считать танцев с бубном, если кому нужен мой способ конвертации спрашивайте в этой теме. Подпишусь на нее. Просто ормальным изложением решения вопроса я не нашел на этом форуме а спрашивать не люблю.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
У меня ситуация была сложнее, некоторые таблицы были в latin1_general_ci а некоторые в cp1251_bin, 2.1.7 вроде как работал отлично пока не коснулось обновления. В итоге конвертация прошла успешно, если не считать танцев с бубном, если кому нужен мой способ конвертации спрашивайте в этой теме. Подпишусь на нее. Просто ормальным изложением решения вопроса я не нашел на этом форуме а спрашивать не люблю.

У меня ситуация сложилась вот такая: обновил форум с 2.1.7 в 2.3.4, кодировка таблиц latin1. Русский язык виден, все форумы,топики,сообщения на русском, все красиво.

Но вот с пользователями у которых русские ники , проблема. Выдает ошибки типа

 

Сообщение сервера: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (

latin1_swedish_ci,COERCIBLE) for operation '='

 

Может чего посоветуете?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Конвертировать базу данных. В документации написано как. Ссылка на неё в шапке форума.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
У меня ситуация сложилась вот такая: обновил форум с 2.1.7 в 2.3.4, кодировка таблиц latin1. Русский язык виден, все форумы,топики,сообщения на русском, все красиво.

Но вот с пользователями у которых русские ники , проблема. Выдает ошибки типа

 

Сообщение сервера: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (

latin1_swedish_ci,COERCIBLE) for operation '='

 

Может чего посоветуете?

Сам разобрался, когда-то при проблемах с буквами Я и Ч в руских никах поставил в базе на таблице ibf_members сравнение на cp1251, поэтому новые поля и создавались с другой кодировкой. Поменял обратно, все стало нормально.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Норов вопрос вот какой. При обновлении до 2.3.4 на не слишком трезвую голову виставил кодировку баз данних latin1. Когда как база нормально до етого работала с cp1251. Как можна поменять то что я записал при апгрейде?...
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.