Товарищи, добрый день!У меня значит моя программа работает, всё в порядке, но в случае одного из запросов к БД - выдаёт такую ошибку:
PHP Fatal error: Uncaught mysqli_sql_exception: Illegal mix of collations (utf8mb3_general_ci,IMPLICIT) and (utf16_general_ci,IMPLICIT) for operation '='
Данные в БД заносятся, читаются, всё ок. Но вот один из запросов выдаёт приведённую выше ошибку.
Сам этот запрос такого вида:
INSERT INTO otd_AU_RepNode (AU_RSectID, AU_RpNodeID, nodeKey, nodeName, nodeDescr, periodType, isObjNode, isRepNeed, relLevel, orderNum, isActive, isPerioded)
SELECT AUK_Rep_sKey2ID(1446, aa.sectKey), AUK_Rep_nKey2ID(1446, aa.pNodeKey), aa.nodeKey, aa.nodeName, aa.nodeDescr, aa.periodType, aa.isObjNode, aa.isRepNeed, aa.relLevel, aa.orderNum, aa.isActive, aa.isPerioded
FROM (
SELECT "o.31" sectKey,"e.22" nodeKey,"" pNodeKey,1 orderNum,2 relLevel,1 isActive,0 periodType,0 isObjNode,0 isRepNeed,"\"Тест\"" nodeName,"\"\"" nodeDescr,0 isPerioded
) aa
JOIN otd_AU_RepSection bb ON bb.sectKey=aa.sectKey
JOIN otd_AU_CTReports cc ON cc.id=bb.AU_RepID
JOIN otd_AU_ClientTemp dd ON dd.id=cc.AU_CT_ID
WHERE cc.id=1446
AND cc.isActive=1
AND dd.isActive=1
AND cc.repState=1
ORDER BY aa.relLevel ASC,
aa.orderNum ASC
ON DUPLICATE KEY UPDATE
nodeName=aa.nodeName,
nodeDescr=aa.nodeDescr,
periodType=aa.periodType,
isRepNeed=aa.isRepNeed,
isObjNode=aa.isObjNode,
orderNum=aa.orderNum,
isActive=aa.isActive,
isPerioded=aa.isPerioded
Я не могу понять в чём дело. Все таблицы и колонки в БД типа: utf8mb3_general_ci
Настройки mariadb-10.11.3:
[client]
default-character-set = utf8[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
В настройках php в целом негде кодировку указывать, но я на всякий случай тоже попробовал это сделать:
default_charset = "UTF-8"
В настройках самого php приложения, также указал:
mb_internal_encoding("UTF-8");
$DBLink->sql('SET NAMES "UTF8";');
$DBLink->sql('SET CHARACTER SET "UTF8";');
-----------------------------------------------------
В Конце: Как это очень часто бывает, достаточно нормально сформулировать вопрос, и ответ скорей всего появится сам собой. Всё в utf-8, а вот процедуры и функции - они видимо были из дампа БД восстановлены, и там откуда они пришли похоже были какие-то другие настройки. Пересоздал все хранимые функции и процедуры - всё завелось. Спасибо за внимание!