[转帖]Linux mysql表名的大小写问题_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3468 | 回复: 0   主题: [转帖]Linux mysql表名的大小写问题        下一篇 
一路向北
注册用户
等级:少校
经验:903
发帖:56
精华:6
注册:2012-12-19
状态:离线
发送短消息息给一路向北 加好友    发送短消息息给一路向北 发消息
发表于: IP:您无权察看 2012-12-20 14:06:24 | [全部帖] [楼主帖] 楼主

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

    1、数据库名与表名是严格区分大小写的;

    2、表的别名是严格区分大小写的;

    3、列名与列的别名在所有的情况下均是忽略大小写的;

    4、变量名也是严格区分大小写的;

MySQL在Windows下都不区分大小写。

    所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环境下只要对数据库的配置做下改动就行了,具体操作如下:

    在MySQL的配置文件中my.ini [mysqld] 中增加一行

lower_case_table_names = 1


  参数解释:

    0:区分大小写

    1:不区分大小写

在 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=1 。否则的话你会发现同样的sqldump脚本在不同的操作系统下最终导入的结果不一样(在 Windows下所有的大写字符都变成小写了)。

工作中碰到的问题:

在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?

    后来网上查了下,原来是LINUX下的MYSQL默认是要区分表名大小写。

    让MYSQL不区分表名大小写的方法其实很简单:

    1.用ROOT登录,修改/etc/my.cnf【】

    2.在[mysqld]下加入一行:lower_case_table_names=1

    3.重新启动数据库即可




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论