数据库问题报错

文章讲述了在使用Navicat导入SQL文件时遇到的Specifiedkeywastoolong...错误,以及如何通过调整MySQL数据库的innodb_large_prefix和innodb_file_format设置,以及设定表的rowformat为Dynamic来解决问题的步骤。

1.Navicat 导入本地sql文件报错“[Msg] Finished - Unsuccessfully

 

 2.Specified key was too long; max key length is 767 bytes

2.1检查数据库索引限制大小

SHOW variables like 'innodb_large_prefix';

当查询的值是OFF的话 继续执行下面命令

SET GLOBAL INNODB_LARGE_PREFIX = ON;

2.2查看当前的innodb_file_format引擎格式类型是不是BARRACUDA

SHOW variables like 'innodb_file_format';

结果不是则继续执行下面sql

SET GLOBAL innodb_file_format = BARRACUDA;

最后创建表的时候,还需要指定表的 row format 格式为 Dynamic 或者 Compressed

如下

DROP TABLE IF EXISTS `qiwen_user_file`;
CREATE TABLE `qiwen_user_file`  (
  `user_file_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `delete_batch_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `delete_flag` int(11) NULL DEFAULT NULL,
  `delete_time` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `extend_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `file_id` bigint(20) NULL DEFAULT NULL,
  `file_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `file_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `is_dir` int(1) NULL DEFAULT NULL,
  `upload_time` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `user_id` bigint(20) NULL DEFAULT NULL,
  PRIMARY KEY (`user_file_id`) USING BTREE,
  UNIQUE INDEX `fileindex`(`file_name`, `file_path`, `extend_name`, `delete_flag`, `user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

提供的引用中未提及解决MyBatis连接数据库时因数据库版本报错的方案。不过,一般来说,MyBatis连接数据库时因数据库版本报错,可能有以下常见情况及解决方法: ### JDBC驱动版本不兼容 不同版本的数据库需要匹配相应版本的JDBC驱动。若驱动版本与数据库版本不匹配,就可能报错。解决办法是确保使用与数据库版本兼容的JDBC驱动。例如,对于MySQL 8.0及以上版本,需使用`com.mysql.cj.jdbc.Driver`驱动;对于MySQL 5.x版本,使用`com.mysql.jdbc.Driver`驱动。在Maven项目中,可在`pom.xml`文件里添加如下依赖来使用MySQL 8.0的驱动: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> ``` ### 数据库连接URL参数问题 不同版本的数据库,其连接URL的参数可能存在差异。以MySQL为例,从MySQL 8.0开始,需要在URL中明确指定`serverTimezone`参数。以下是一个适用于MySQL 8.0的连接URL示例: ```xml <property name="url" value="jdbc:mysql://localhost:3306/yourdatabase?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"/> ``` ### 数据库特性不支持 较新的数据库版本可能会引入一些新特性,而旧版本的MyBatis可能不支持这些特性。此时,可考虑升级MyBatis到支持相应数据库特性的版本。在Maven项目中,可在`pom.xml`文件里修改MyBatis的依赖版本: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值