包头建设厅官方网站,国精产品999国精产品视频,建设网站都需要哪些,建设银行信用卡网站会员注册问题描述
最近把网站向一台新的CentOS服务器中做迁移#xff0c;把MySQL数据库和前后端站点全都部署完成后#xff0c;网站启动之后一直在报表名不存在的错误。
开始略微疑惑#xff0c;以为是做数据库备份的时候漏了表#xff0c;检查后发现并不是这么回事。 略一思索把MySQL数据库和前后端站点全都部署完成后网站启动之后一直在报表名不存在的错误。
开始略微疑惑以为是做数据库备份的时候漏了表检查后发现并不是这么回事。 略一思索想起来很久之前其实遇到过这个问题这是由于MySQL数据库大小写敏感引起的。
MySQL在Windows系统中是不区分大小写的但是在Linux系统中默认是区分大小写的。这时候如果稍微不注意就会出错。
在MySQL数据库中大小写敏感的配置和两个参数有关lower_case_file_system 和 lower_case_table_names。 我们可以在MySQL中使用下面的命令查询这两个参数
1、lower_case_file_system
只读变量描述当前操作系统的文件目录是否区分大小写。 OFF表示文件名区分大小写ON表示它们不区分大小写。
2、lower_case_table_names代表表名是否大小写敏感可以修改参数有0、1、2三种。
0 大小写敏感。UnixLinux默认 创建的库表将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录create table AbCCC …将会原样生成AbCCC.frm文件SQL语句也会原样解析。1 大小写不敏感。Windows默认 创建的库表时MySQL将所有的库表名转换成小写存储在磁盘上。 SQL语句同样会将库表名转换成小写。 如需要查询以前创建的Testtable生成Testtable.frm文件即便执行select * from Testtable也会被转换成select * from testtable致使报错表不存在。2 大小写不敏感OS X默认 创建的库表将原样保存在磁盘上 但SQL语句将库表名转换成小写。
如何解决
在Linux系统中MySQL的配置文件一般在/etc/my.cnf这个文件中这时候我们只需要在配置文件的[mysqld]下面加上一行参数就可以 lower_case_table_names1
注意事项
从上面lower_case_table_names参数的值可以看出来不同操作系统重对于大小写敏感的默认设置是不一致的所以我们在开发时SQL语句最好一律采用小写字母避免出现错误。