为什么这个表名需要反向标记?

时间:2013-05-16 09:09:09

标签: mysql mysql-python

我在以下MySQL表定义中看到一个奇怪的名称依赖。当我如图所示对表进行编码时,它似乎打破了MySQL。当我从MySQLQueryBrowser执行“select * from dictionary_pair_join”时,状态栏显示“没有返回结果集” - 没有列名,也没有错误。当我在表中插入一行时,状态栏显示“受最后一个命令影响的1行,没有返回结果集”,后续选择给出相同的“无结果集返回”响应。

当我在“select”语句中将tablename括在反引号中时,一切正常。当然没有名为“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`;

为什么select语句需要反引号?

更新:这在Python mysqldb界面中也失败了,这就是我开始查看它的原因。我可以将反引号放入我的Python“选择”生成器中,但我希望这是一些愚蠢且容易改变的内容。我想我也可以找到一个不同的名字。

1 个答案:

答案 0 :(得分:0)

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

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