我需要更改mysql是接受大写和小写表名,
select * from users
以上查询工作正常,但以下查询无效,
select * from USERS
答案 0 :(得分:7)
这取决于您的系统(Unix,Windows和Mac OS的主要值)。
您需要设置系统变量" lower_case_table_names"为1或2,使数据库不区分大小写。
SET lower_case_table_names=1;
或
SET lower_case_table_names=2;
答案 1 :(得分:2)
windows =小写。
我不建议将mysqld配置更改为0或2.
lower_case_table_names = 0(比较区分大小写) 如果设置为0,则表名称按指定方式存储,并且比较区分大小写。
lower_case_table_names = 1(比较不区分大小写) 如果设置为1,表名称将以小写形式存储在磁盘上,并且比较不区分大小写。
如果要更改它,请在windows中找到my.ini文件,通常是mysql目录,在wamp中检查bin目录并添加" lower_case_table_names = 0"或" lower_case_table_names = 2"
此选项也适用于数据库名称和表别名。 参考https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lower_case_table_names
答案 2 :(得分:0)
表和数据库名称使用CREATE TABLE
或CREATE DATABASE
语句中指定的字母大写存储在磁盘上。名称比较区分大小写。如果在具有不区分大小写的文件名(例如Windows或Mac OS X)的系统上运行MySQL,则不应将此变量设置为0。如果在不区分大小写的文件系统上使用 - lower-case-table-names = 0 强制此变量为0并使用不同的字母表访问MyISAM表名,则可能会导致索引损坏。
http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
答案 3 :(得分:0)
数据库和表名在Windows中不区分大小写,在大多数Unix中区分大小写。
In MySQL, databases correspond to directories within the data directory.
Each table within a database corresponds to at least one file within the database
directory. Consequently, the case sensitivity of the underlying operating system
plays a part in the case sensitivity of database and table names.
阅读以下部分:8.2.2. Identifier Case Sensitivity
但是要解决您的问题,您可以创建一个表格视图,将名称设置为不同的大小写。但那么users
答案 4 :(得分:0)
一个选项是根据您的操作系统需要将所有表名设置为低或高。
select concat('rename table ', table_name, ' to ' , lower(table_name) , ';') from information_schema.tables where table_schema = 'your_schema_name';
复制所有行并执行它们:)
答案 5 :(得分:0)
我花了很长时间试图解决这个问题,在我的系统上所有其他SQL查询都可以正常工作。
事实证明,我偶然将我要查找的新表添加到了另一个数据库中(在另一个项目上工作)。
我建议您仔细检查一下您是否在寻找正确的表,正确的数据库,正确的域...祝您好运!