在運行轉儲的SQL文件時,成功運行,試了很多辦法都不顯示出表。
原因:當從一個高版本的 MySQL 數據庫導入數據到低版本的 MySQL 數據庫時,可能會遇到兼容性問題。因為高版本的 MySQL 可能支持 utf8mb4_0900_ai_ci,而低版本可能不支持。這種情況下,就會出現字符集和排序規則不匹配的問題。
為了解決這一問題,有兩種主要的方法:
1. 使用一致的數據庫版本:這是最理想的解決方案,因為這樣可以確保字符集和排序規則的兼容性。然而,這在實際操作中可能并不總是可行的,特別是在大型項目或跨多個環境的開發中。
2. 修改字符集和排序規則:如果我們不能更改數據庫版本,那么另一種方法就是修改 SQL 中的字符集和排序規則。具體來說,我們可以在 SQL 腳本中找到所有使用 utf8mb4_0900_ai_ci 的地方,并將其替換為 utf8mb4_general_ci。這樣做的原因是,utf8_general_ci 是一種更通用的排序規則,被大多數 MySQL 版本所支持。
這里我把SQL文件中的所有的utf8mb4_0900_ai_ci替換為utf8mb4_general_ci。
下面是一個示例:
-- 原始 SQL
DROP TABLE IF EXISTS `app_feedback`;
CREATE TABLE `app_feedback` (`id` int NOT NULL AUTO_INCREMENT,`record_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`mode` int NOT NULL,`theme` int NOT NULL,`content` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`file_list` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`add_time` datetime(6) NOT NULL,`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`device_info` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '{}',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- 修改后的 SQL
DROP TABLE IF EXISTS `app_feedback`;
CREATE TABLE `app_feedback` (`id` int NOT NULL AUTO_INCREMENT,`record_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`mode` int NOT NULL,`theme` int NOT NULL,`content` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`file_list` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`add_time` datetime(6) NOT NULL,`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`device_info` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '{}',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
注意字符集和排序規則。
?
?