当前位置: 首页 > java >正文

避坑指南!解决Navicat运行SQL成功但没有表的问题

在运行转储的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;

注意字符集和排序规则

 

 

http://www.xdnf.cn/news/19772.html

相关文章:

  • 达梦数据库在大小写不敏感的情况下,如何使查询比较中依旧可以做大小写敏感比较?
  • FFmpeg命令行音视频工具:高效实现格式转换与批量处理,支持音频提取与精准视频剪辑
  • Parasoft C/C++test如何实现开发环境内嵌的安全检测
  • 多工况切换定向:陀螺定向短节 vs 传统陀螺工具,谁的适配性更强?
  • 【单片机day01】
  • 学习React-8-useImmer
  • TDK InvenSense CH201距离传感器
  • 还在从零开发AI应用?这个项目直接给你500个现成方案!!!
  • Autosar之Det模块
  • 智慧工地如何撕掉“高危低效”标签?三大社会效益重构建筑业价值坐标
  • 贝叶斯定理
  • WAF与CDN在网络安全中的协同作用
  • GitLens VS Code插件测评:助力代码协作高效查提交记录,轻松解决分支管理与代码冲突
  • `<meter> ` 元素 无需 JavaScript/CSS 实现密码强度提示
  • esp32小智ai对话机器人
  • 【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
  • 万和电气卢宇聪:在“慢周期”做本质的事
  • GoLand IDE 无法识别 Go 工作区中的引用,如何解决?
  • 5.kafka集群安装
  • 区间DP .
  • Android U Lmkd源码解析
  • maven 常用指令
  • 二叉树的非递归遍历 | 秋招面试必备
  • Redis分布式缓存
  • RabbitMQ消息堆积问题排查:concurrentConsumers 配置的坑与解决方案
  • js设计模式-职责链模式
  • More Effective C++ 条款24:理解虚拟函数、多继承、虚继承和RTTI的成本
  • VMWare ubuntu24.04安装(安装ubuntu安装)
  • 复杂PDF文档如何高精度解析
  • css3元素倒影效果属性:box-reflect