合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## SQLSTATE\[HY000\]: General error: 1267 Illegal mix of collations (utf8\_unicode\_ci,IMPLICIT) and (utf8mb4\_unicode\_ci,COERCIBLE) for operation 这个错误通常是由于不同字符集和排序规则的数据库表之间的操作引起的。在您的情况下,错误信息指出发生了两个不同字符集的表之间的操作。 具体来说,错误信息中提到了两个不同的字符集:`utf8_unicode_ci`和`utf8mb4_unicode_ci`。这两个字符集虽然看起来相似,但是在 MySQL 中,它们被视为不同的字符集。 解决这个错误的方法是将所有表的字符集和排序规则设置为相同的。可以使用以下步骤来解决这个问题: 1. 确定哪些表使用了不同的字符集和排序规则。您可以使用以下 SQL 查询来列出所有表的字符集和排序规则: ``` SELECT TABLE_NAME, TABLE_COLLATION FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name'; ``` ![](https://img.kancloud.cn/8f/6a/8f6a32dd9229d3ef65f936378cb62b9d_361x468.png) 2. 更改表的字符集和排序规则。您可以使用以下 SQL 语句来更改表的字符集和排序规则: ``` ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 如果查询出来很多表 可以使用如下语句的结果来批量执行 ``` SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' ) AS alter_table_statement FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test' and TABLE_COLLATION='utf8_unicode_ci' ``` ![](https://img.kancloud.cn/9d/13/9d138adfb5b66fdbccd00b4c1e597f21_954x413.png) 总之,要解决这个错误,您需要将所有表的字符集和排序规则设置为相同的。可以使用 SQL 语句来更改表的字符集和排序规则,也可以在 Laravel 中的`config/database.php`文件中配置连接的字符集和排序规则。请注意,在更改任何表的字符集和排序规则之前,请确保您已经备份了数据库。