gpt4 book ai didi

mysql - Windows 中 MySql 区分大小写表名的奇怪行为

转载 作者:可可西里 更新时间:2023-11-01 07:35:02 29 4
gpt4 key购买 nike

在我的 Windows 机器上,当我使用以下查询从 mysql 中选择表名时,我得到的表名区分大小写。

mysql> select table_schema, table_name 
from information_schema.tables where table_schema='test';
+--------------+------------+
| table_schema | table_name |
+--------------+------------+
| test | TableOne |
| test | TableTwo |
+--------------+------------+
2 rows in set (0.00 sec)

但是当我按表名选择时,我得到了不同的结果。

mysql> select table_schema, table_name from information_schema.tables 
where table_schema='test' and table_name = 'TableOne';
+--------------+------------+
| table_schema | table_name |
+--------------+------------+
| test | tableone |
+--------------+------------+
1 row in set (0.00 sec)

更奇怪的是这个。

mysql> select table_schema, table_name from information_schema.tables 
where table_schema='test' and table_name like 'TableOne';
+--------------+------------+
| table_schema | table_name |
+--------------+------------+
| test | TableOne |
+--------------+------------+
1 row in set (0.00 sec)

最佳答案

有一个名为 lower_case_table_names 的 MySql 变量。当它设置为 0 时,表名区分大小写。但是在像 Windows 这样不区分大小写的机器上不建议这样做。下一个选项是 1。在此选项中,所有表名甚至在存储之前都被转换为小写。在这种情况下,您将始终获得小写的表名。在我的例子中,此变量的值设置为 2。在这种情况下,MySql 存储表名,但是当我们比较表名时,它会将它们转换为小写并进行比较。

所以在第一种情况下,表名没有被比较,因此我们得到了原始值。

第二种情况我们比较的是表名,所以mysql将表名转为小写进行比较。但奇怪的是,他们返回的是转换后的值,而不是原始值。

最后在第三种情况下,我们使用 like 运算符,它本身不区分大小写,因此 mysql 不会费心将表名转换为小写,我们得到了原始结果。

关于mysql - Windows 中 MySql 区分大小写表名的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26457396/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com