【问题标题】:MySQL says table is there, then says it's notMySQL说表在那里,然后说它不存在
【发布时间】:2011-01-22 07:16:14
【问题描述】:

检查数据库生成的 sql(看起来不错):

CREATE TABLE `HourOfDay` (
  `id` int(11) NOT NULL,
  `hourString` varchar(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

检查文件系统(它在那里):

# ls -al Mycomp_test | grep -i hour
-rw-rw----    1 _mysql  wheel      0 Mar  1 08:13 HourOfDay.MYD
-rw-rw----    1 _mysql  wheel   1024 Mar  1 08:13 HourOfDay.MYI
-rw-rw----    1 _mysql  wheel   8598 Mar  1 08:13 HourOfDay.frm

检查数据库(看起来不错):

»mysql -u root Mycomp_test -e 'show tables' | grep -i hour
HourOfDay

检查数据库表(哎呀wtf!?):

»mysql -u root Mycomp_test -e 'show create table HourOfDay'
ERROR 1146 (42S02) at line 1: Table 'mycomp_test.hourofday' doesn't exist

更新:更多信息

  • 这是一个运行 mysql-5.1.38-osx10.5-x86_64 的 OSX 系统

  • 如果我删除数据库并重新创建它,我会得到同样的错误(它可以可靠地重现)。

【问题讨论】:

    标签: mysql sql mysql-error-1146


    【解决方案1】:

    “Table 'mycomp_test.hourofday' doesn't exist”是可疑的,因为在 unix/linux 系统上应该是HourOFDay。

    【讨论】:

    • 是unix/linux还是windows系统文件与linux/unix系统共享?
    【解决方案2】:

    8.2.2。 Identifier Case Sensitivity

    »cat /etc/my.cnf 
    [mysqld]
    lower_case_table_names=2
    

    【讨论】:

    • 我会尝试 lower_case_table_named=0
    • 它是否适用于所有小写名称的表? CREATE TABLE hourofday 如果是这样,这不是问题。
    猜你喜欢
    • 2017-09-13
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多