我在下面的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語句:
select * from dictionary_pair_join;
下面是它的工作對口:
select * from `dictionary_pair_join`;
爲什麼在需要反引號選擇語句?
更新:這也在Python mysqldb接口中失敗,這就是我開始看它的原因。我可以將反引號放入我的Python「select」生成器中,但我希望這是一些愚蠢且容易改變的內核。我想我也可以找到一個不同的名字。
它在命令行'mysql'中工作嗎? – Quassnoi
看起來像一個錯誤,因爲對我來說,它工作正常,即使沒有反引號..我正在使用MySQL 5.5 –
暫停,我會檢查... –