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

MySQLのvarcharでサイズを指定しないと発生するERROR 1064 (42000)の解決方法

エラーが発生する状況

まず、このエラーがどのような場面で発生するのかを確認しましょう。次の例では、テーブルを作成する際に、列のデータ型として varchar を指定していますが、サイズ(文字数)の指定を省略しています。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName varchar,
    LastName varchar
);
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 ',
LastName varchar
)' at line 4

このように、varchar 型は最大長を必ず指定する必要があるため、サイズを省略すると構文エラー(ERROR 1064 (42000))が発生します。これは MySQL の仕様であり、CHAR 型とは異なる点なので注意が必要です。

エラーの解決方法

解決方法は簡単です。varchar(100) のように、かっこ内に最大文字数を指定してください。これだけでエラーは解消されます。

それでは、正しくテーブルを作成してみましょう。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName varchar(100),
    LastName varchar(100)
);
Query OK, 0 rows affected (0.60 sec)

今度は正常にテーブルが作成されました。

レコードの挿入

続いて、INSERT コマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable(FirstName,LastName) values('Adam','Smith');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable(FirstName,LastName) values('John','Doe');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable(FirstName,LastName) values('Chris','Brown');
Query OK, 1 row affected (0.11 sec)

データの確認

SELECT 文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下のようになります。

+----+-----------+----------+
| Id | FirstName | LastName |
+----+-----------+----------+
|  1 | Adam      | Smith    |
|  2 | John      | Doe      |
|  3 | Chris     | Brown    |
+----+-----------+----------+
3 rows in set (0.00 sec)

まとめ

MySQL で varchar 型を使用する際は、varchar(100) のように必ず最大長を指定する必要があります。サイズの指定を忘れると ERROR 1064 (42000) が発生しますが、適切なサイズを指定することで簡単に解決できます。なお、指定できる最大値は MySQL のバージョンや行フォーマットによって異なりますが、一般的には 0〜65,535 の範囲で指定可能です。

  1. C#でsizeofを使わずに変数のサイズを取得する方法

    はじめにC#では、通常、変数のサイズ(バイト数)を取得するには sizeof 演算子を使用します。int x; x = sizeof(int);しかし、sizeof を使わずに変数のサイズを取得したい場合もあります。そのようなときは、BitConverter.GetBytes メソッドを利用するのが便利です。このメソッドは指定した値をバイト配列に変換してくれるため、その配列の長さ(Length プロパティ)を調べることで、変数のサイズを求めることができます。// sizeofを使わない方法 byte[] dataBytes = BitConverter.GetBytes(x); int d =

  2. Windows 10/8/7で「システムエラー5が発生しました。アクセスが拒否されました」を解決する3つの対処法

    PCのコマンドプロンプトで頻繁にコマンドを実行している方なら、「システムエラー5が発生しました。アクセスが拒否されました(System error 5 has occurred. Access is denied)」というメッセージを目にしたことがあるかもしれません。このエラーは、管理者権限が必要なコマンドを実行しようとした際に、その権限を持っていない場合に発生します。管理者権限なしでコマンドプロンプトを起動すると、コマンドを実行するための権限がないため、この問題に直面することになります。 本記事では、「エラー5:アクセスが拒否されました」が発生するさまざまな原因と、Windows 10/8/