生產環境的sql出現:Illegal mix of collations for operation 'UNION'


早晨剛來上班沒多久,突然收到測試童鞋發過來生產環境的一個報錯。

Illegal mix of collations for operation 'UNION'。

什么鬼情況,怎么剛上線就出問題了

我讓測試童鞋重現了一下,我監視着服務器的日志。

我去。還真的有。接下來就開始茫茫找問題路。

——————————————————————————————————————————————————

找問題:

1.首先網上搜索了下,說是union關聯sql里字段編碼問題不一致。因為測試環境沒有這個問題,我首先定位於數據問題。

  挨個刪減查詢字段,最后定位到一個字段上,語句是這么寫的,snStartDest.一個拼接類型的字段:

SELECT
    id,
    CONCAT( route_starts, route_dests ) AS snStartDest 
FROM  A
UNION  (
    SELECT
        user_id AS id,
        '' AS snStartDest 
   FROM B

)

2.在concat里,我單獨一個字段都是ok的(CONCAT( route_starts)CONCAT( route_dest)),只是兩個字段concat一起是不行的(CONCAT( route_starts, route_dests ))。此時證明已不是數據問題,想起來搜查網上的字段編碼問題,決定看下是不是生產環境字段編碼確實有問題。

3.生產環境倆個字段果然不一致,再看了下測試環境是一致的。找到運維童鞋,運維也很蒙圈,什么時候倆字段變了。

  最后在線上環境都改成unicode編碼,解決。測試環境編碼一直一致。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM