簡體   English   中英

錯誤代碼:1271。在 mysql 上操作“UNION”的排序規則的非法混合

[英]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添加到視圖時發生錯誤。

從中獲取column4table2的表定義是,

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.

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