|
MySQL 8.0 默認的排序規(guī)則為 utf8mb4_0900_ai_ci,使用腳本還原的表的排序規(guī)則可能是 utf8mb4_general_ci,之后又自己在庫中建的表是 utf8mb4_0900_ai_ci,于是庫中存在這兩種排序規(guī)則,在做關聯(lián)查詢時就會報錯。 解決方案 將庫中所有表的排序規(guī)則改為一致,此處演示將 utf8mb4_0900_ai_ci 批量改為 utf8mb4_general_ci 生成修改腳本 SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), (case when IFNULL(column_comment,'')='' then '' else concat(' COMMENT \'' , column_comment ,'\'') end), ';') as `sql` FROM information_schema.COLUMNS WHERE 1=1 and TABLE_SCHEMA = 'LT_PMP_Dev' #要修改的數(shù)據(jù)庫名稱 and DATA_TYPE = 'varchar' and COLLATION_NAME='utf8mb4_0900_ai_ci' 生成的 SQL 語句如下: ALTER TABLE `project_list` MODIFY `notice` varchar(800) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '項目公告'; ALTER TABLE `project_list` MODIFY `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '租戶號'; ALTER TABLE `project_member` MODIFY `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '項目角色'; ALTER TABLE `project_plan` MODIFY `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '計劃名稱'; ALTER TABLE `project_plan` MODIFY `status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '計劃狀態(tài)'; 執(zhí)行上面的 SQL 就好了。 如果存在外鍵: 注意:如果表中有外鍵的話會執(zhí)行失敗,這就比較麻煩了,刪除外鍵重建吧,或者導出建表 SQL 修改建表語句的排序規(guī)則重樣的建表還原數(shù)據(jù)。 ALTER TABLE ACT_DE_MODEL MODIFY id varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL 3780 - Referencing column 'model_id’ and referenced column 'id’ in foreign key constraint 'fk_relation_child’ are incompatible. 時間: 0.003s ———————————————— 版權聲明:本文為CSDN博主「ifu25」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/ifu25/article/details/120646717 |
|
|
來自: hncdman > 《數(shù)據(jù)庫》