2017-05-08 7 views
1

私は 'messages'というテーブルを持っています。私は 'キー'と呼ばれる列を追加することはできません。テーブルにカラムを追加できません - mysql

私は

ALTER TABLE messages ADD key BIGINT(20); 

をしようとすると、私はこのエラーを取得:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bigint(20)' at line 1

は私が間違って何をしているのですか?

+0

ここに追加列のクエリを投稿 –

+1

@MayankPandeyz:それが掲載されています。これは最初のコードフラグメントです。 –

答えて

2

構文の強調表示はすでに問題を示しています。keyはキーワードです(これは面白いと思います)。バッククォートは、列の名前のない一部であることを

ALTER TABLE messages ADD `key` BIGINT(20); 
--      ^^backquotes

マインド:列の名前がkeyになりますあなたは、列名を指定するには、バッククォートを使用することができます。バッククォートを使用することにより、キーワードkeyではなく、列名を明示的に記述することができます。

+0

それは働いた。しかし、テーブルに表示されたときにキーからバッククォートを削除する方法はありますか? – JonasSH

+2

@JonasSH:バッククォートは**カラム名の一部ではありません**。逆引用符は、キーワードキーではなく、 'key'という名前を指定すると言うだけです。 –

+2

@ JonasSH、バッククォートはDBに格納されません。また、タブ/列名の予約/キーワードの使用を停止する – Rahul

3

キーはmysqlのキーワードなので、 Reserved keywords

あなたはこのクエリで問題ないはずワードキーをエスケープすることにより

ALTER TABLE messages ADD `key` BIGINT(20); 

を使用することができます。

0

問題はkeyあるMySQLのでの予約語であるため、

のような二重引用符 ""(ANSI92標準)を使用して

ALTER TABLE messages ADD `key` 

(OR)のようなbacktique使用してエスケープする必要があります

ALTER TABLE messages ADD "key" 

さらに、予備語/キーワードの使用を停止するfまたはテーブル/列名(実際には任意のDBオブジェクト名)

関連する問題