Ошибка БД SQL Illegal mix of collations (cp1251_bin,IMPLICIT)
Всем привет!
Это первая тема в разделе SQLphpmyadmin, буду ее иногда дополнять J
Сегодня при переносе старого сайта и БД SQLна другой хостинг возникла ошибка. Вернее, перенос прошел удачно, а возникла ошибка уже после при обращении к скрипту, который этой базой пользовался.
Итак ошибка: «1267: Illegal mix of collations (cp1251_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '=' (mysqlserver)».
Задача: избавится от нее и заставить нормально работать.
Сразу видно, что проблема где-то с кодировкой. Или «Обнаружена ошибка синтаксиса запроса к базе данных»
Решение: Идем в phpmyadmin– смотрим в какой кодировке таблица в БД – видим cp1251. Видимо давно база была создана в этой кодировке. Сервер кушает utf-8.
1 способ - можно исправить кодировку таблицы на нужную прямо в phpmyadmin.
2 способ – поколдовать в скрипте отвечающим за коннект и передачу данных.
Попробуем сразу после подключения явно указать кодировку, в которой собираемся передавать данные.
Поэтому в скрипте прописываем следуещее после строк коннекта (клиент, коннект и результат):
mysql_query("SET character_set_client = 'cp1251'");
mysql_query("SET character_set_connection = 'cp1251'");
mysql_query("SET character_set_results = 'cp1251'");
Выглядит примерно так:
Кодировку, естественно, надо указать ту, которая вам нужна.
Проеверяем - все работает!
- Оцените материал
- Опубликовано в SQL phpmyadmin
- Прочитано 12600 раз