MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで予約語をテーブル名または列名として使用しているときに発生するエラーを解決するにはどうすればよいですか?


このエラーは、予約語をテーブル名または列名として使用しようとしたときに発生します。 -

が原因で発生する可能性があります

ケース1 :予約語をテーブル名として使用する場合-

mysql> create table insert
−> (
−> Id int
−> );

エラーは次のとおりです-

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 'insert
(
Id int
)' at line 1

上記のエラーは、「挿入」という単語がMySQLのキーワードであるために発生しました。

ケース2 −MySQLで予約語を列名として使用する場合。

mysql> create table Customers
   −> (
   −> Add int
   −> );

エラーは次のとおりです-

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 'Add int
)' at line 3

上記のエラーは、列名「Add」がMySQLで予約語であるために発生しました。

上記のエラーを回避するには、MySQLのすべての予約語について知っておく必要があります

MySQLの予約語の一部は次のとおりです-

Insert
Add
Is
Key
Like etc.

MySQLの予約済みキーワードの完全なリストは次のとおりです。これはMySQLの公式ウェブサイトです-https://dev.mysql.com/doc/refman/5.7/en/keywords.html

この問題を解決するには、reservedキーワードでバックティックを使用します。

-テーブル名または列名に予約済みキーワードを使用することはできません。ただし、バックティックでそれらを含めることは正しいと見なされます。

例-

create table `insert`

テーブルと列名を使用したバックティックのデモ。

mysql> create table `Insert`
   −> (
   −> `Add` int
   −> );
Query OK, 0 rows affected (0.59 sec)

バックティックを使用すると、エラーは発生しません。


  1. 「index」という名前のテーブル列を作成する際のMySQL構文のエラーを修正しますか?

    予約語であるため、インデックスを列名として使用することはできません。このためには、列名の前後にバッククォートを使用する必要があります。 列名として予約語を使用すると、次のエラーが表示される可能性があります- mysql> create table DemoTable    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> index int    -> )ENGINE=MyISAM; ERROR 1064 (42

  2. テーブル名として「group」を使用しているときのMySQL構文エラー(SELECTクエリ内)

    グループは予約済みのキーワードであるため、テーブル名として使用することはできません。したがって、テーブル名として使用するとエラーが発生します。このようなエラーを回避するには、テーブル名「group」の前後に囲まれたバッククォート記号を使用する必要があります。 例を見て、テーブルを作成しましょう- mysql> create table `group`    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> Name varchar(20)