7

これはいくつかの単純なコードですが、なぜこの単語をテーブルのエンティティとして使用できないのかわかりません

CREATE TABLE IF NOT EXISTS users(
key INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
);

キーを使用すると「キー」を使用できないことに気づきました。mysqlは構文を確認するように求めますが、「id」またはその他を使用するとテーブルが作成されます。

エンティティ名をキーに作成する方法を知っている人はいますか? キーの代わりにIDを使用できるので重要なことではありませんが、このエラーを見つけたので、それを機能させる方法があるかどうかを確認します。

4

2 に答える 2

17

ご希望の方は引き続きご利用いただけkeyます。バックティックでラップするだけで、

CREATE TABLE IF NOT EXISTS users
(
    `key` INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
);

ただし、今後の問題を回避するために、予約済みのキーワードは使用しないでください。:)

于 2013-03-31T00:57:33.040 に答える
4

末尾のアンダースコア

簡単な解決策:すべての名前の末尾にアンダースコアを追加します。

SQL 仕様SQL:2011は、現在も将来も、キーワードの末尾にアンダースコアを使用しないことを明示的に約束しています。

例:key_

同様の質問に対する私の回答を参照してください。 h2 データベースの列名は予約語です。

于 2013-11-05T06:33:19.057 に答える