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

MySQLエラー1406の修正:データが列に対して長すぎます」が、そうではありませんか?


このエラーは、許可された制限よりも高いデータを設定しようとした場合に発生する可能性があります。たとえば、varcharまたはstringはビットデータ型よりもサイズが大きいため、bit型の列に文字列を格納することはできません。

ビットタイプ列には次の構文を使用する必要があります:

anyBitColumnName= b ‘1’
OR
anyBitColumnName= b ‘0’

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです。

mysql> create table IncasesensitiveDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(10),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.70 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。レコードを挿入するためのクエリは次のとおりです。

mysql> insert into ErrorDemo(Name,isStudent) values('John',1);
Query OK, 1 row affected (0.18 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Sam',0);
Query OK, 1 row affected (0.21 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Mike',0);
Query OK, 1 row affected (0.16 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Larry',1);
Query OK, 1 row affected (0.23 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Carol',1);
Query OK, 1 row affected (0.11 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Robert',0);
Query OK, 1 row affected (0.17 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('James',1);
Query OK, 1 row affected (0.18 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Bob',1);
Query OK, 1 row affected (0.19 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('David',1);
Query OK, 1 row affected (0.15 sec)
mysql> insert into ErrorDemo(Name,isStudent) values('Ricky',0);
Query OK, 1 row affected (0.17 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです。

mysql> select *from ErrorDemo;

出力は次のとおりです。

+----+--------+-----------+
| Id | Name   | isStudent |
+----+--------+-----------+
|  1 | John   |           |
|  2 | Sam    |           |
|  3 | Mike   |           |
|  4 | Larry  |           |
|  5 | Carol  |           |
|  6 | Robert |           |
|  7 | James  |           |
|  8 | Bob    |           |
|  9 | David  |           |
| 10 | Ricky  |           |
+----+--------+-----------+
10 rows in set (0.00 sec)

実際のサンプル出力スナップショットは次のとおりです。

MySQLエラー1406の修正:データが列に対して長すぎます」が、そうではありませんか?

上記のエラーは次のとおりです。以下のクエリで生成されます:

mysql> update ErrorDemo set isStudent='1' where Id=9;
ERROR 1406 (22001): Data too long for column 'isStudent' at row 1

上記のエラーを回避するには、「1」の前に接頭辞bを付ける必要があります。これで、クエリは次のようになります。

mysql> update ErrorDemo set isStudent=b'1' where Id=9;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0

selectステートメントを使用してテーブルレコードをもう一度確認します。クエリは次のとおりです。

mysql> select *from ErrorDemo;

出力は次のとおりです。

+----+--------+-----------+
| Id | Name   | isStudent |
+----+--------+-----------+
|  1 | John   |           |
|  2 | Sam    |           |
|  3 | Mike   |           |
|  4 | Larry  |           |
|  5 | Carol  |           |
|  6 | Robert |           |
|  7 | James  |           |
|  8 | Bob    |           |
|  9 | David  |           |
| 10 | Ricky  |           |
+----+--------+-----------+
10 rows in set (0.00 sec)

実際のサンプル出力スナップショットは次のとおりです。

MySQLエラー1406の修正:データが列に対して長すぎます」が、そうではありませんか?

isStudent列を見てください。

次に、同じIDを値0で更新します。これにより、対応するIDで空白の値が得られます。クエリは次のとおりです。

mysql> update ErrorDemo set Name='Maxwell', isStudent=b'0' where Id=9;
Query OK, 1 row affected (0.16 sec)
Rows matched: 1 Changed: 1 Warnings: 0

上記で更新された特定の行のレコードを確認してください。これがId9です。これで行がレコードId9で更新されました。クエリは次のとおりです。

mysql> select *from ErrorDemo where Id=9;

出力は次のとおりです。

+----+---------+-----------+
| Id | Name    | isStudent |
+----+---------+-----------+
|  9 | Maxwell |           |
+----+---------+-----------+
1 row in set (0.00 sec)

  1. コネクタをクラスパスに設定するためのJavaMySQL接続の接続エラーを修正しますか?

    修正するには、MySQLコネクタをJavaクラスパスに配置する必要があります。コネクタのjarファイルを使用しているIDEのプロジェクトフォルダにインポートします。 これがクラスパスを配置するためのスナップショットです- ここで、JavaとMySQLを接続するためのコードを見てみましょう- これにより、次の出力が生成されます-

  2. 単一のMySQLクエリのすべての列名に「エイリアス」を設定します

    列名のエイリアスを設定するための構文は次のとおりです- select yourColumnName1 anyAliasName1,yourColumnName2 anyAliasName2 from yourTableName anyAliasName; 上記の構文を理解するために、テーブルを作成しましょう- mysql> create table DemoTable2014    -> (    -> FirstName varchar(20),    -> LastName varchar(20)