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 の範囲で指定可能です。
-
C#でsizeofを使わずに変数のサイズを取得する方法
はじめにC#では、通常、変数のサイズ(バイト数)を取得するには sizeof 演算子を使用します。int x; x = sizeof(int);しかし、sizeof を使わずに変数のサイズを取得したい場合もあります。そのようなときは、BitConverter.GetBytes メソッドを利用するのが便利です。このメソッドは指定した値をバイト配列に変換してくれるため、その配列の長さ(Length プロパティ)を調べることで、変数のサイズを求めることができます。// sizeofを使わない方法 byte[] dataBytes = BitConverter.GetBytes(x); int d =
-
Windows 10/8/7で「システムエラー5が発生しました。アクセスが拒否されました」を解決する3つの対処法
PCのコマンドプロンプトで頻繁にコマンドを実行している方なら、「システムエラー5が発生しました。アクセスが拒否されました(System error 5 has occurred. Access is denied)」というメッセージを目にしたことがあるかもしれません。このエラーは、管理者権限が必要なコマンドを実行しようとした際に、その権限を持っていない場合に発生します。管理者権限なしでコマンドプロンプトを起動すると、コマンドを実行するための権限がないため、この問題に直面することになります。 本記事では、「エラー5:アクセスが拒否されました」が発生するさまざまな原因と、Windows 10/8/