MySQL的大小写敏感性[lower_case_table_names]
2015-09-26 13:18
751 查看
在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。
奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。
要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。
或者也可以强制以 -O lower_case_table_names=1 参数启动
mysqld(如果使用 --defaults-file=.../my.cnf 参数来读取指定的配置文件启动 mysqld 的话,你需要在配置文件的 [mysqld] 区段下增加一行 lower_case_table_names=1)。这样MySQL
将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名)。
当你更改这个选项时,你必须在启动 mysqld 前首先将老的表名转换为小写字母。
换句话说,如果你希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置0: lower_case_table_names=0 。否则的话你会发现同样的sqldump脚本在不同的操作系统下最终导入的结果不一样(在Windows下所有的大写字符都变成小写了)。
1、WINDOWS 查找my.ini
sc qc MySQL|find "*.ini"
2、到相应目录下修改 my.ini
[mydqld]下添加
lower_case_table_names=0
3、修改后重启服务,使用管理员权限
net stop mysql
net start mysql
奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。
要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。
或者也可以强制以 -O lower_case_table_names=1 参数启动
mysqld(如果使用 --defaults-file=.../my.cnf 参数来读取指定的配置文件启动 mysqld 的话,你需要在配置文件的 [mysqld] 区段下增加一行 lower_case_table_names=1)。这样MySQL
将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名)。
当你更改这个选项时,你必须在启动 mysqld 前首先将老的表名转换为小写字母。
换句话说,如果你希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置0: lower_case_table_names=0 。否则的话你会发现同样的sqldump脚本在不同的操作系统下最终导入的结果不一样(在Windows下所有的大写字符都变成小写了)。
1、WINDOWS 查找my.ini
sc qc MySQL|find "*.ini"
2、到相应目录下修改 my.ini
[mydqld]下添加
lower_case_table_names=0
3、修改后重启服务,使用管理员权限
net stop mysql
net start mysql
相关文章推荐
- mysql授权用户root使用密码password从指定ip为192.168.1.1的主机连接到mysql服务器
- mysqlbackup 还原特定的表
- LNMP环境搭建——MySQL篇
- MySQL . column_key
- mysql存储过程
- MySQL主从同步原理+部署
- MySql创建本地用户和远程用户 并赋予权限
- 关于mysql中文插入 问号??问题的解决方法!
- MySQL快速复制数据库的方法
- MySQL Cluster(MySQL 集群) 初试
- Mysql 列转行统计查询 、行转列统计查询
- mycat+mysql分片
- MySQL数据库的索引实现
- mysql 字符集乱码及解决方案
- MySQL查看当前数据库库
- MySQL学习笔记20150925时间数据类型以及字符集与varchar(M)M最大值关系
- 如何使用MySQL处理数据——增删改查
- ubuntu修改mysql密码
- [实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像
- nodejs+express+mysql+handsontable