快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱乐安卓下载和:MySQL与Entity Framework Code First数据表大小写的问题解决



曩昔都是应用Linux平台下的MySQL,现在为了调试方便,在开拓机上安装了MySQL的Windows版本5和记娱乐安卓下载和.6.10,在应用Entity Framework Code First天生数据库工具时,发明所有的数据表的表名都变成了小写字符,而字段的名称是混杂大年夜小写的,这个问题在Linux平台上没有呈现过,于是动手和记娱乐安卓下载和弄明白这是肿么一回事。

颠末网上搜索,找到这篇文章:

Entity Framework with mysql, Table Capitalization issue between linux and windows

大年夜致的意思是说:这个问题孕育发生的根源是操作系统,MySQL保存数据表到文件,最初MySQL是在Linux平台开拓的,文件名和数据表名称都是大年夜小写敏感的,由于绝大年夜多半的Linux文件系统是大年夜小写敏感的。

后来,MySQL推出Windows平台的版本,而Windows平台是大年夜小写不敏感的,以是无法区分大年夜小写的名称。为了办理这个问题,必要添加设置来轻忽表名的大年夜小写。于是建立了lower_case_table_names设置选项。在Windows平台可以在my.ini文件中设置,该文件在Windows7或Windows2008操作系统中位于 C:\ProgramData\MySQL\MySQL Server 5.6 目录下。在Linux平台可以改动my.cnf中的设置项。

缺省的选项--

Linux平台:大年夜小写敏感 Case-Sensitive

Wind和记娱乐安卓下载和ows平台:大年夜小写不敏感 Case-Insenstitive

问题的缘故原由找到啦,我们可以在Linux中设置lower_case_table_names为1启用大年夜小写不敏感。也可以设置MySQL在Windows中大年夜小写敏感,然则这不是个好主见。

记着,变动设置后必要重启MySQL办事。

在Linux中最好应用大年夜小写敏感的设置,会得到更高的机能。在Windows平台最好应用大年夜小写不敏感的设置,由于不能存在两个仅有大年夜小写差异而文件名字母相同的表。

由此而生,这也是为什么Linux下MySQL的机能会好过Windows下的缘故原由。(其他缘故原由有:更好的计划调整更快的磁盘IO和文件系统)

也可以在创建数据库时应用下面的语句来指定大年夜小写敏感设置:

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs; //实测:这一句不能在Windows平台下的MySQL应用;

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_ci;

响应的,也可以为某一个数据表设置大年夜小写敏感:

DROP TABLE IF EXISTS single_test_table;

CREATE TABLE single_test_table(single_test_id int unsigned NOT NULL auto_increment,

...

PRIMARY KEY PK_single_test_id (single_test_id ),...

) ENGINE=M和记娱乐安卓下载和yISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_cs;

官方文和记娱乐安卓下载和档5.6.10中指出:

If you are using InnoDB tables, you should set this variable to 1 on all platforms to force names to be converted to lowercase.

假如应用InnoDB引擎,应该在所有的平台设置lower_case_table_names=1强制名称都转换为小写。

您可能还会对下面的文章感兴趣: