簡體   English   中英

MySQL在簡單的INSERT上非法混合使用排序規則'='

[英]MySQL illegal mix of collations for operation '=' on a simple INSERT

SELECTINSERT * 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世界的數據是否可能導致這種情況? 可能與當前的連接會話變量有關嗎?


UPDATE

我忘記添加MySQL版本:5.6

我在測試運行中解決了這個問題,將所有字段歸類移至DEFAULT並將表歸類移至table1上的utf8_general_ci 但是,這是無法解決該問題的解決方案,並且還無法回答簡單的INSERT語句中如何存在排序規則混淆?

我找到了罪魁禍首。 該表上有一個TRIGGER,它引用了另一個模式中的另一個表。 觸發器語句中存在沖突,這無助於錯誤消息沒有暗示這樣的事實。

那答案

一個簡單的INSERT語句中如何有排序規則混合?

INSERT附帶有一個TRIGGER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM