[英]Error Code: 1271. Illegal mix of collations for operation 'UNION' on mysql
我有一個這樣設計的視圖,
SELECT ('header1,header2,header3,header' ) as `line`
UNION ALL
SELECT DISTINCT CONCAT(column1,column2,column3,column4) as `line`
from mytables t
join table2 gc ON (gc.code = t.code)
where t.myfield = getId()
getId() function 看起來像這樣,
DELIMITER $$
CREATE FUNCTION `getId`() RETURNS varchar(30) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
NO SQL
DETERMINISTIC
return @bid$$
DELIMITER ;
為了跟蹤錯誤,我經歷了一個消除過程,我通過刪除和添加列來重新創建視圖,並且在將column4添加到視圖時發生錯誤。
從中獲取column4的table2的表定義是,
CREATE TABLE `table2` (
`code` int NOT NULL,
`column4` varchar(100) NOT NULL
PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我在視圖theview上使用以下查詢(這是出現操作“UNION”錯誤的非法排序規則混合的地方),
SELECT distinct s.* FROM (SELECT @bid:='AB') parm, `theview` s;
我在其他視圖上使用 getId() function 並且我沒有收到錯誤。
根據收到的問題建議,我將 collate utf8mb4_unicode_ci 添加到第一個查詢中,因此查詢現在看起來像,
SELECT ('header1,header2,header3,header' ) collate utf8mb4_unicode_ci as `line`
看起來它已經成功了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.