2013-08-01 25 views
2

我建立一個簡單的應用程序,其中列出球隊和比賽包圍Mysql的拋出一個錯誤。團隊和賽事數據庫建成具有以下腳本(我使用phpMyAdmin):當一個表名是不是用單引號

CREATE TABLE IF NOT EXISTS `Team` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(120) NOT NULL, 
    `screen_name` varchar(100) NOT NULL, 
    `sport_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

CREATE TABLE IF NOT EXISTS `Match` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `sport_id` int(11) NOT NULL, 
    `team_one_id` int(11) NOT NULL, 
    `team_two_id` int(11) NOT NULL, 
    `venue` varchar(80) NOT NULL, 
    `kick_off` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; 

如果我這樣做:

SELECT * FROM Team 

運行該腳本,我得到一個空的結果。但是,不可思議的是,如果我做

SELECT * FROM Match 

我得到以下錯誤:

1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本在線路附近使用「匹配」 1

取而代之的是正確的語法手冊,我必須做的:

SELECT * FROM `Match` 

和它的作品。我在數據庫中有其他表,但這是唯一的行爲。任何想法爲什麼?

+1

MATCH是Mysql關鍵字。如果您必須將其用作表格名稱,則必須引用它。我建議你把它改成不會衝突的東西。 – 2013-08-01 20:40:49

+1

當事物命名,[保留此頁書籤](http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)的使用而保留的關鍵字名稱證明煩人。 – tadman

回答

2

match是SQL

在這裏閱讀更多的保留字: https://drupal.org/node/141051

+0

啊,謝謝。我很愚蠢! – user1716672

+0

這是一個容易犯的錯誤,最糟糕的部分是有時你會發現保留字適用於一種類型的語句,但對於其他類型的錯誤。只要在將來出現類似錯誤時檢查保留字:) – Robadob

2

比賽是MySQL中的功能,因此你必須把它周圍的報價。

相關問題