關於Mysql數據庫建庫字符集utf8mb4下,排序規則utf8mb4_bin和utf8mb4_general_ci選擇造成的查詢匹配大小寫問題


場景描述:

  項目采用了分庫模式進行不同業務的開發,在共有的功能模塊進行設計的時候采用主從庫,或者各分庫之中存在同樣的庫表結構,在使用過程中做庫表同步的時候一定要保證庫表所在的數據庫的字符集和編碼格式是保持一致的。否則完成庫表同步或者遷移之后會造成查詢問題:各獨立庫表查詢數據都沒有問題,但是在等值查詢或者關聯查詢的時候會出現查詢數據為空的現象;騷操作:在A庫中把表建好了,copy到B庫中,導致庫表的排序規則不一致大小寫匹配的時候出現問題。

邏輯描述:

  在數據從app入庫的時候存儲的是大寫的字符code:123XXX,然后數據庫查詢的時候傳入的是小寫的code:123xxx,這時候是能查到的。然后二次存入的時候會以二次輸入的code作為入參,這樣存到后台就變成小寫的code:123xxx。這是數據庫存在了大小寫不同的數據,此時如果有存在關聯查詢以code為關聯外鍵的時候會出現查詢的時候存在大小寫匹配失敗導致查詢失敗。

所以:

  不同的數據庫建立一定要保持字符集和排序規則一致。


免責聲明!

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



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