mysql 大小写问题

来源:互联网 发布:淘宝客服总结报告 编辑:程序博客网 时间:2024/05/21 19:34

mysql 数据库在windows下默认表名是不区分大小写的, 但linux默认是区分的.


在linux下修改/etc/my.cnf需要在[mysqld]添加lower_case_table_names=1, 然后要通过命令 sudo service mysqld restart重启.


但如果之前表已经建好,这时会出现错误, 如select * from XX.XX; 会告诉你xx.xx不存在,即时show tables显示XX.XX真的存在.

这时要重建数据库, 如何转换而不重建, 没有查出来.我想是发现这个问题一般比较早, 数据库中还没有数据.


这时通过

 drop database mydb;
 Error dropping database (can't rmdir './mydb', errno: 39
这时你跑show tables; 你会发现全时含大写表名的表存在的.

因为lower_case_table_names=1意味着全是小写,大写的不会删除;

这时要做的是

1. 修改lower_case_table_names=0;

2. sudo service mysqld restart;

3. drop database xxx;

4. 修改lower_case_table_names=1;

5. sudo service mysqld restart;6. create database xxx;

6. 给用户权限,grant all privileges on xxx.* to xxx_user;


按道理是lower_case_table_names=2,也行, 但在/var/log/mysqld.log中看到了

[Warning] lower_case_table_names was set to 2, even though your the file system '/var/lib/mysql/' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems.



0 0
原创粉丝点击