今天从一个线上数据库迁移数据到开发库,
用mysqldump 导出导入后,用DataGrip连上开发库,一切都正常,数据和表都过来了;
然后跑起来程序(ORM使用的是hibernate),抛出了 Table XXX doesn't exist的异常...一脸懵逼,表名名就在哪里,为何你却视而不见?
然后想到了,是不是引擎的问题,查了一下,发现引擎的确不一样,由于线上数据库使用的是InnoDB引擎,而我在Centos上安装的mysql,其引擎是MyISAM
然后,修改重启,然并卵...
后来,终于搜到了,原来是Centos下面mysql默认是会区分大小写的...,终于按说明修改了配置文件,重启后,表终于被hibernate发现了...
在这里特别备注一下一些引擎相关的操作和命令:
1. 查看数据库支持的引擎:
show ENGINES;
2. 查看数据库当前引擎:
show variables like'%storage_engine%';
3. 修改数据库引擎:
编辑 /etc/my.ini 中,添加:
default-storage-engine=InnoDB
4. 修改大小写敏感
编辑 /etc/my.ini 中,在[mysqld]添加:
lower_case_table_names=1
重启数据库 /etc/rc.d/init.d/mysqld restart
网友评论