不得不说一下,测试环境和生产环境下真的不是我说,区别真的不是一星半点的不同。你需要考虑的问题真的有很多,这或许是有人喜欢使用苹果电脑的原因吧。
MySQL错误思路分析无非几个场景
配置文件与数据库默认配置冲突问题
默认参数变量限制操作
❌不同操作系统默认大小写敏感设置不同
默认参数变量限制操作
错误信息
java.sql.SQLSyntaxErrorException: Table 'jeecg-boot.QRTZ_LOCKS' doesn't exist
之所以有这种错误是因为数据库开启了大小写敏感,你可以通过 show global variables like '%lower_case%'; 命令来查询 lower_case_table_names 参数变量的值。当该参数的值为 1 时,即代表大小写不敏感。
解决方法
修改相关表名,将其重名为大写的。当然你也可以修改数据库默认配置文件 /etc/mysql/my.cnf ,但是这种并不可行容易出现配置文件与数据库默认配置冲突问题,一般出现在 docker 上面,导致数据库无法运行起来。
❌超出索引字节的限制
默认参数变量限制操作
错误信息
#1071 - Specified key was too long; max key length is 767 bytes
这个问题是创建表为其设置外键索引时候报的错误。这个问题在我本地环境下的电脑是没有的,当时我陷入一篇慌乱中,现在想想也就那样吧。
解决方法
mysql> set global innodb_large_prefix = ON;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
❌超出行字节的限制
默认参数变量限制操作
错误信息
#1709 - Index column size too large. The maximum column size is 767 bytes.
解决方法
mysql> set global innodb_file_format = Barracuda;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)