1

我在以下 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。我想我也可以找到一个不同的名字。

4

1 回答 1

0

我已经升级了 Quassnoi 和 Software Guy 的评论,他们一起说服我这只是 mysql/mysqldb/mysqlquerybrowser 中的一个错误。

我在查询浏览器和 mysqldb 中更改了表名(更改为“dictionary_pair_cons”)并且问题消失了。

于 2013-05-16T10:00:25.167 回答