:
mysql> create table penguin (mydecimal decimal(9,8));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into penguin values (1234.1234);
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+----------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------+
| Warning | 1264 | Out of range value for column 'mydecimal' at row 1 |
+---------+------+----------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from penguin;
+------------+
| mydecimal |
+------------+
| 9.99999999 |
+------------+
1 row in set (0.00 sec)
あなたは9.9が繰り返さ最大を取ることができるの列に1234を詰め込むことを試みました。行がまだ挿入されていることに注意してください。
あなたがstrictモードを使用して、この変換を防ぐために、MySQLのコンソールを取得することができます。
mysql> set sql_mode=STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into penguin values (5678.5678);
ERROR 1264 (22003): Out of range value for column 'mydecimal' at row 1
INSERTコマンドは、ペンギンに2つ目の行を追加しようとして失敗しました:
mysql> select * from penguin;
+------------+
| mydecimal |
+------------+
| 9.99999999 |
+------------+
1 row in set (0.00 sec)
ソリューション
- 列内のデータ型のサイズを拡張し、そこに入れる値を受け入れます。
- 小さなデータ型に詰め込もうとしている値のサイズを縮小します。
http://stackoverflow.com/questions/73109/mysql-data-truncation-error –