В SELECT
и INSERT * SELECT
есть много вопросов о смешивании сортировки. Mine - это простой INSERT
ничего не добавлено, кроме данных.
Ошибка, возникшая в процессе:
Недопустимое сочетание сортировок (utf8_unicode_ci, IMPLICIT) и (utf8_general_ci, IMPLICIT) для операции '='
Все имена полей и имена таблиц были упрощены. Выполняется запрос:
INSERT INTO table1 ('a','b','c','d','e','f','g','h','i','j') VALUES (?,?,?,?,?,?,?,?,?,?);'''
Он был подготовлен для получения некоторых данных, которые были связаны с процессом Java с JDBI.
В базовых таблицах нет ничего странного. Их DDL выглядят следующим образом.
CREATE TABLE 'table1' (
'a' varchar(32) COLLATE utf8_unicode_ci NOT NULL,
'b' varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL,
'c' varchar(32) COLLATE utf8_unicode_ci NOT NULL,
'd' varchar(32) COLLATE utf8_unicode_ci NOT NULL,
'e' varchar(32) COLLATE utf8_unicode_ci NOT NULL,
'f' int(11) DEFAULT NULL,
'g' text COLLATE utf8_unicode_ci,
'h' bigint(20) DEFAULT NULL,
'i' bigint(20) DEFAULT NULL,
'j' datetime DEFAULT NULL,
'k' timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ('a','e'),
KEY 'c' ('c','d'),
CONSTRAINT 'fk_1' FOREIGN KEY ('a') REFERENCES 'table2' ('a2'),
CONSTRAINT 'fk_2' FOREIGN KEY ('c', 'd') REFERENCES 'table3' ('a3', 'b3')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE 'table2' (
'a2' varchar(32) COLLATE utf8_unicode_ci NOT NULL,
'b2' varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
'c2' mediumtext COLLATE utf8_unicode_ci,
'd2' mediumtext COLLATE utf8_unicode_ci,
'e2' bigint(11) DEFAULT '0',
PRIMARY KEY ('a2')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE 'table3' (
'a3' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
'b3' varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY ('a3','b3')
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Как видно, абсолютно ничего не известно о сопоставлении, которое я могу понять. Возможно ли, что данные, поступающие из java-мира, вызывают это? Может ли это быть связано с текущими переменными сеанса связи?
Я забыл добавить версию MySQL: 5.6
Я решил эту проблему в моем тесте прогонов перемещения всех полей сортировки по умолчанию, а таблица параметров сортировки для utf8_general_ci
на table1
. Тем не менее, это неприемлемое решение проблемы, и она не приближается к тому, чтобы ответить, как может быть смешанное смешивание в простом заявлении INSERT?
Я нашел преступника. В этой таблице есть TRIGGER, который ссылается на другую таблицу из другой схемы. Конфликт существует в операторах триггера, который не помогает, чтобы сообщение об ошибке не делало намека на такой факт.
Это ответы
как может быть смешанное смешивание в простой инструкции INSERT?
Существует TRIGGER, сопровождающий INSERT