鍍金池/ 問答/數(shù)據(jù)庫  HTML/ mysql多表查詢1267報錯

mysql多表查詢1267報錯

const books = await mysql('books')
                  .select('books.*','csessioninfo.user_info')
                  .join('csessioninfo','books.openid','csessioninfo.open_id')
                  // .orderBy('id','desc')
 code: 'ER_CANT_AGGREGATE_2COLLATIONS', errno: 1267, sqlMessage: 'Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation \'=\'', sqlState: 'HY000', index: 0, sql: 'select `books`.*, `csessioninfo`.`user_info` from `books` inner join `csessioninfo` on `books`.`openid` = `csessioninfo`.`open_id`' } +1ms

執(zhí)行上邊的代碼報錯1267,不知道什么原因造成的?

自己在數(shù)據(jù)庫執(zhí)行也是這個錯誤
mysql> select `books`.*, `csessioninfo`.`user_info` from `books` inner join `csessioninfo` on `books`.`openid` = `csessioninfo`.`open_id`
    -> ;
ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='
回答
編輯回答
夕顏

從報錯信息上可以看出,是books表和csessioninfo的排序規(guī)則不一致導(dǎo)致的。你可以修改 books 表,將排序規(guī)則改為utf8mb4_unicode_ci

2017年12月8日 23:01