MySQL8建议默认字符集为utf8mb4,因为需要多张表删除同ID的关联数据,便使用定义变量方式,删除时报错如下
Error Code: 1267. Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
应该就是等号两边的字符集不同,导致无法正常比较。终于找到解决方案如下:
SET SQL_SAFE_UPDATES = 0;
-- 初始赋值
set @orderid = '123';
-- 清理订单表
DELETE FROM order_info WHERE id = @orderid COLLATE utf8mb4_general_ci;
SET SQL_SAFE_UPDATES = 1;