[英]Illegal mix of collations MySQL Error in Query laravel
我嘗試此查詢時遇到此錯誤
SQLSTATE[HY000]: General error: 1270 Illegal mix of collations (latin1_spanish_ci,IMPLICIT), (latin1_bin,NONE), (utf8_unicode_ci,COERCIBLE) for operation 'replace'
這是我的查詢
$codigoRadicado = DB::table('radicado')
->leftJoin ('dependencia','radicado.Dependencia_idDependencia', "=", 'dependencia.idDependencia')
->leftJoin ('serie','radicado.Serie_idSerie', "=", 'serie.idSerie')
->leftJoin ('subserie','radicado.SubSerie_idSubSerie', "=", 'subserie.idSubSerie')
->select (DB::raw("CONCAT(abreviaturaDependencia, codigoSerie, codigoSubSerie,LPAD((MAX(REPLACE ( codigoRadicado , CONCAT(abreviaturaDependencia, codigoSerie, codigoSubSerie), '' ))+1),10,'0')) as codigoRadicado"))
->where ('radicado.Dependencia_idDependencia', "=", $request['Dependencia_idDependencia'])
->where ('radicado.Serie_idSerie', "=", $request['Serie_idSerie'])
->where ('radicado.SubSerie_idSubSerie', "=", $request['SubSerie_idSubSerie'])
->get();
當執行SQL語句時,MySQL拋出錯誤。 錯誤消息表明問題是在“替換”操作中發生的。
這似乎表明REPLACE()函數可能是罪魁禍首。
REPLACE( codigoRadicado , CONCAT(abreviaturaDependencia,codigoSerie,codigoSubSerie) , '' )
這似乎與錯誤消息一致,表明字符集/排序規則有所不同
(latin1_spanish_ci,IMPLICIT), (latin1_bin,NONE), (utf8_unicode_ci,COERCIBLE)
我們不確定,但是我們懷疑排序規則的順序與REPLACE函數的參數順序相同。
但是錯誤表明我們有多種“排序規則”排序規則,而MySQL不會違反其“強制性”規則。
解決此類問題的典型方法是識別每個表達式的排序規則,然后在顯式轉換中包裝一個(或多個)表達式。 CONVERT(使用排序規則的foo)
對於字符串文字,我們可以采用快捷方式並指定字符集(它將獲得默認排序規則),例如_latin1'foo'
要獲取表達式中使用的每一列的字符集和排序規則,可以檢查表定義。 SHOW CREATE TABLE的輸出應向您顯示。 (如果未在列上指定,則為在創建表時分配的默認值。(如果在創建表時未指定,則默認為分配給數據庫的值。)
參考: http : //dev.mysql.com/doc/refman/5.7/en/charset-collation-expressions.html
每個字符集都有一個默認排序規則。 我們可以通過查詢找到每個字符集的默認排序規則。
SELECT * FROM information_schema.charactersets
我們可以獲取另一個查詢的完整排序列表...
SELECT * FROM information_schema.collations
MySQL還提供了COERCIBILITY函數,可以幫助調試問題,以幫助我們確定哪些列或文字表達式不能“強制”為其他排序規則。
參考: http : //dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_coercibility
(我不確定其中任何一個都能回答您提出的問題,因為我不確定是否存在實際的問題 。我只是猜測您打算提出一個問題,例如“為什么會引發此錯誤?” ,而不僅僅是發布狀態報告。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.