Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/120: Рейтинг темы: голосов - 120, средняя оценка - 4.60
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234

Ошибка Illegal mix of collations

23.10.2018, 17:41. Показов 24080. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! подскажите, пожалуйста, как исправить ошибку:
PHP
1
PHP Fatal error:  Uncaught Exception: Error: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation '='<br />Error No: 1267<br />UPDATE oc_product SET status =0 WHERE product_id IN (SELECT product_id FROM oc_product WHERE DATE_ADD(date_available, INTERVAL 21 DAY) < CURDATE() or 'date_end' = CURDATE()) ....
SQL
1
2
UPDATE " . DB_PREFIX . "product SET STATUS =0 WHERE product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_special WHERE DATE_ADD(date_available, INTERVAL 21 DAY))
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2018, 17:41
Ответы с готовыми решениями:

Illegal mix of collations for operation '<='
Здравствуйте . Помогите пожалуйста с кодом для базы . Вот сам кусок кода $times_del = DB()-&gt;fetch_rowset(&quot;SELECT...

MySQL ошибка Illegal mix of collations for operation 'like'
В проекте используется библиотека MySQL Connector.NET при обработке запроса вида SELECT * FROM tablename WHERE columnname LIKE %любой...

Illegal mix of collations for operation 'like'
Здравствуйте, есть такой запрос: $selectQuery = &quot;SELECT * FROM articles WHERE `article_id` LIKE '$query' OR `article_name` LIKE...

14
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 18:43
steve09, судя по всему, у вас хаос с кодировками таблиц в базе. Приведите все к одному виду. Предполагаю, что utf8_general_ci.
0
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 18:56  [ТС]
Lazy_Den, вроде все нормально. Попробовал переделать кодировку у таблиц - ничего не изменилось(
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 19:18
Цитата Сообщение от steve09 Посмотреть сообщение
вроде все нормально
Если бы было всё нормально, то ошибки бы не было ))
1. Проверить - все ли таблицы в одной кодировке, например, в phpMyAdmin:
MySQL
1
2
3
4
5
6
7
SELECT 
  `TABLE_NAME`, `TABLE_COLLATION` 
FROM 
  `INFORMATION_SCHEMA`.`TABLES`
WHERE 
  `TABLE_SCHEMA` = 'db_name' AND 
  `TABLE_TYPE` = 'BASE TABLE';
db_name - имя БД.

2. Если какие-то выбиваются из общего ритма, то привести их к одному знаменателю:
MySQL
1
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
table_name - имя проблемной таблицы.

3. Над базой в целом тоже можно произвести аналогичное действие:
MySQL
1
ALTER DATABASE `db_name` CHARACTER SET utf8 COLLATE utf8_general_ci;
4. Указывать кодировку при подключении к базе. В принципе, можно попробовать начать с этого пункта.

Добавлено через 3 минуты
P.S. Если опыта у вас не очень много, то рекомендую сделать дамп базы, перед тем, как производить с ней какие-то манипуляции.
0
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 19:20  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
1. Проверить - все ли таблицы в одной кодировке, например, в phpMyAdmin:
все таблицы в одной кодировке)

Цитата Сообщение от Lazy_Den Посмотреть сообщение
4. Указывать кодировку при подключении к базе. В принципе, можно попробовать начать с этого пункта.
не подскажите в опенкарте как это сделать?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 19:24
Цитата Сообщение от steve09 Посмотреть сообщение
не подскажите в опенкарте как это сделать?
У них там вроде есть два варианта на выбор для работы с БД: MySQLi и PDO. Ваш какой?
0
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 19:26  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
У них там вроде есть два варианта на выбор для работы с БД: MySQLi и PDO. Ваш какой?
MySQLi
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 19:37
Цитата Сообщение от steve09 Посмотреть сообщение
MySQLi
Откройте файл /system/library/db/mysqli.php, найдите в конструкторе $this->link->set_charset(" ... ");Вместо трёх точек, должна быть указана кодировка. Измените на "UTF8", если она друга. После этой строки добавьте:
PHP
1
$this->link->query("SET collation_connection = utf8_general_ci");
Если не помогло, то выведите сгенерированную строку своего запроса. Попробуйте запустить её прямо в phpMyAdmin или консоли. Какой будет результат?

Добавлено через 4 минуты
Кстати, я не уточнил, какая же у вас кодировка в базе и таблицах?
0
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 19:39  [ТС]
Lazy_Den, есть вот такое
PHP
1
2
$this->connection->set_charset("utf8");
    $this->connection->query("SET SQL_MODE = ''");
Добавлено через 1 минуту
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Кстати, я не уточнил, какая же у вас кодировка в базе и таблицах?
utf8_general_ci
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 19:40
Цитата Сообщение от steve09 Посмотреть сообщение
есть вот такое
PHP
1
$this->connection->query("SET collation_connection = utf8_general_ci");
0
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 19:43  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Если не помогло, то выведите сгенерированную строку своего запроса. Попробуйте запустить её прямо в phpMyAdmin или консоли. Какой будет результат?
скрин приложил
Миниатюры
Ошибка Illegal mix of collations  
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 19:47
Лучший ответ Сообщение было отмечено steve09 как решение

Решение

steve09, теперь ясно. Имена баз и таблиц оборачиваются в грависы (обратные кавычки), а не в однарные.
Вместо 'date_end' пишем `date_end`
1
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 19:52  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
steve09, теперь ясно. Имена баз и таблиц оборачиваются в грависы (обратные кавычки), а не в однарные.
PHP
1
$query = $this->db->query("UPDATE " . DB_PREFIX . "product SET `status` =0 WHERE `product_id` IN (SELECT `product_id` FROM " . DB_PREFIX . "product WHERE DATE_ADD(`date_available`, INTERVAL 21 DAY) < CURDATE() or `date_end` = CURDATE())" );
да, проблема решилась... спасибо громадное! но...

SQL
1
2
3
4
g.site.ru [Tue Oct 23 19:53:30 2018] [error] [pid 47986] sapi_apache2.c(362): [client ] 
PHP Fatal error:  Uncaught Exception: Error: You can't specify target table 'oc_product' for update in FROM clause<br />Error No: 1093<br />
 
UPDATE oc_product SET status =0 WHERE product_id IN (SELECT product_id FROM oc_product WHERE DATE_ADD(date_available, INTERVAL 21 DAY) < CURDATE() or `date_end` = CURDATE()) in /home/n/user/gorodoktest/public_html/system/library/db/mysqli.php   ....
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
23.10.2018, 20:13
Лучший ответ Сообщение было отмечено steve09 как решение

Решение

Цитата Сообщение от steve09 Посмотреть сообщение
но...
Пробуйте так:
MySQL
1
2
3
4
5
6
7
8
UPDATE
    `oc_product` `t1`
INNER JOIN `oc_product` `t2` ON
    (`t1`.`product_id` = `t2`.`product_id`)
SET
    `t1`.`status` = 0
WHERE
    DATE_ADD(`t2`.`date_available`,INTERVAL 21 DAY) < CURDATE();
Добавлено через 6 минут
Забыл дописать условие OR `date_end` = CURDATE(), но надеюсь, что догадаетесь
1
1 / 1 / 6
Регистрация: 26.04.2009
Сообщений: 234
23.10.2018, 21:57  [ТС]
Lazy_Den, спасибо большое! выручили!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2018, 21:57
Помогаю со студенческими работами здесь

Ошибка: При декодировании JSON возникла ошибка: Illegal Token
Добрый день. Сегодня решил обновить Wordpress до версии 5.2, но перед этим сделал резервную копию (и правильно сделал!) После...

Ошибка Illegal Instruction
Программа находит ошибки Illegal instruction и прочее! Помогите с решением текст .asm вставлена ниже .386P .MODEL FLAT, stdcall ...

Ошибка illegal indirection
Собственно ситуация: Подключил я &lt;math.h&gt;; Пытаюсь воспользоваться символической константой M_PI; #include &quot;stdafx.h&quot; ...

Ошибка: Illegal qualifier
ругается на переменную k в open в чем причина?( если что, это сапер, open - процедура открытия пустых ячеек unit Unit3; ...

Ошибка Illegal use of floating point
Добрый вечер, прошу помочь с ошибкой &quot;Illegal use of floating point&quot; double d=0; double p=0; double z; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru