我在玩MySQL(好奇,自学),我注意到一件奇怪的事情:
我想创建一个表:

use `a`;

CREATE TABLE `Languages` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `LanguageName` char(10) NOT NULL DEFAULT '',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

但结果是,表名是languages而不是Languages。为什么?在创建表之前我应该知道些什么吗?

最佳答案

检查lower_case_table_names系统变量的值。如果此变量的值为1,则MySQL会将所有表名转换为小写以供存储。有关此行为的更多信息,请访问:MySQL Identifier Case Sensitivity
MySQL实际上建议使用这种行为来避免数据传输问题(从上面链接的文档中):
避免因数据库或
表名,有两个选项:
在所有系统上使用小写的表名=1。主要缺点
当您使用SHOW TABLES或SHOW DATABASES时
看不到原来信盒里的名字。
在Unix上使用小写字母表名称=0,在Unix上使用小写字母表名称=2
窗户。这将保留数据库和表名的字母大小写。
这样做的缺点是你必须确保你的陈述
总是用正确的
窗户上的信盒。如果将语句转移到Unix,则
信盒很重要,如果信盒是
不正确。

关于mysql - MySQL CREATE TABLE脚本和表名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8771123/

10-16 07:27