我在以下 MySQL 表定义中看到了一个奇怪的名称依赖性。当我如图所示对表进行编码时,它似乎破坏了 MySQL。当我从 MySQLQueryBrowser 执行“select * from dictionary_pair_join”时,状态栏显示“没有返回结果集”——没有列名也没有错误。当我在表中插入一行时,状态栏显示“1 行受最后一个命令影响,没有返回结果集”,随后的选择给出相同的“没有返回结果集”响应。
当我在“select”语句中将表名括在反引号中时,一切正常。当然没有名为“dictionary_pair_join”的mysql实体!
这是表定义:
DROP TABLE IF EXISTS dictionary_pair_join;
CREATE TABLE dictionary_pair_join (
version_id int(11) UNSIGNED NOT NULL default '0',
pair_id int(11) UNSIGNED default NULL,
KEY (version_id),
KEY (pair_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是损坏的选择语句:
select * from dictionary_pair_join;
这是它的工作对应物:
select * from `dictionary_pair_join`;
为什么选择语句中需要反引号?
更新:这在 Python mysqldb 接口中也失败了,这就是我开始研究它的原因。我可以将反引号放入我的 Python“选择”生成器中,但我希望这是一些愚蠢且易于更改的 nit。我想我也可以找到一个不同的名字。