我开始害怕,因为我似乎有一张幻影表......但是如果我运行这两个查询,它就不会出现在Navicat中:
SELECT count(*) from messages;
SELECT count(*) from Messages;
我得到两组不同的结果!
然而,奇怪的是如果我运行show tables
我只看到一个名为messages
的表
这吓坏了我,因为我不知道数据是否会错误地投入到错误的表Messages
有没有人见过这个?
我不确定该怎么做。
按要求
运行show table status like 'messages';
messages InnoDB 10 Compact 224163 222 49889280 0 53608448 8388608 208683 2014-08-23 20:16:11 latin1_swedish_ci
再次更新
我跑了两个人:
SELECT * FROM information_schema.tables WHERE table_name = 'Messages';
SELECT * FROM information_schema.tables WHERE table_name = 'messages';
它显示了具有不同记录数的多个记录
可怕的部分是我对数据库中的其他表运行相同的查询,并且我使用相同技术测试的所有其他表都存在相同的问题。
好像我每张桌子都有两个副本,一个带有大写第一个字母,另一个带有小写字母,似乎小写字母是"最新的"两个。
答案 0 :(得分:1)
我建议您使用information_schema.tables
的查询检查表格。
SELECT * FROM information_schema.tables WHERE table_name = 'Messages';
还要考虑有人创建视图的可能性。
SELECT * FROM information_schema.views WHERE table_name = 'Messages';
有一个影响的MySQL变量 lower_case_tables_names
;此变量的默认值取决于操作系统(Linux,Windows,OS X)。 (我们在MySQL系统上明确设置为1.)根据参考手册:
"如果您使用的是InnoDB表,则应在所有平台上将此变量设置为1,以强制将名称转换为小写。"
(本手册的这一部分并未描述您在InnoDB表中观察到的行为,如果此变量设置为1以外的其他值。)
参考:http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_lower_case_table_names