欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【Mysql数据库名和表名的大小写敏感性问题】,下面是详细的分享!
Mysql数据库名和表名的大小写敏感性问题
在 MySQL 中,数据库和表对应于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。一个特例是 Mac OS X,当缺省的 HFS+ 文件系统使用时。然而 Mac OS X 还支持 UFS 卷,那些在 Mac OS X 是大小写敏感的就如他们在任一 Unix 上一样。查看章节 1.8.3 MySQL 对 ANSI SQL92 的扩展。
注意:尽管在 Windows 中数据库与表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库和表。下面的查询将不能工作,因为它以 my_table 和 MY_TABLE 引用一个表:
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
列名与列的别名在所有的情况下均是忽略大小写的。
表的别名是区分大小写的。下面的查询将不能工作,因为它用 a 和 A 引用别名:
mysql> SELECT col_name FROM tbl_name AS a WHERE a.col_name=1 OR A.col_name=2;
如果记忆数据库和表名的字母大小写有困难,建议采用一个一致一约定,例如总是以小写字母创建数据库和表。
避免这个问题的另一个办法就是以 -O lower_case_table_names=1 参数启动 mysqld。缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0。
如果 lower_case_table_names 为 1 ,MySQL 将在存储与查找时将所有的表名转换为小写字线。(从 MySQL 4.0.2 开始,这个选项同样适用于数据库名。) 注意,当你更改这个选项时,你必须在启动 mysqld 前首先将老的表名转换为小写字母。
$ pwd
/data1/etl/aiinsight/ScheduleServer/mysql/support-files
$ ./mysql.server stop
$ pwd
/data1/etl/aiinsight/ScheduleServer/mysql/bin
./mysqld_safe --lower_case_table_names
方法2:修改my.cnf配置文件
在[mysqld]节下加入
lower_case_table_names=1
以上所分享的是关于Mysql数据库名和表名的大小写敏感性问题,下面是编辑为你推荐的有价值的用户互动:
相关问题:linux下mysql表名大小写问题
答:这个和hibernate 无关,MYSQL的问题 1、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写; 2、用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名... >>详细
相关问题:mysql中大小写敏感么?
答:MySQL数据库名和表名的大小写敏感说明:MySQL中的数据库名和表名和操作系统有关,在windows操作系统中,不区分大小写,在unix ,linux操作系统中,是区分大小写的。其实可以到mysql存放数据的data目录下进行查看,可以知道其实一个数据库是对应... >>详细
相关问题:如何设置mysql 数据库列内容区分大小写
答:MySQL在Linux下数据库名、表名、列名、别名大小写规则: 1、数据库名与表名是严格区分大小写 2、表的别名是严格区分大小写 3、列名与列的别名在所有的情况下均是忽略大小写的 4、变量名也是严格区分大小写的 注意: A、Linux下MySQL安装完后默认... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
