2011-07-13 8 views
2

列をテキストからvarchar列に変更しています。mysql:データが長すぎて変更表の列が変更されない

+------------------+--------------+------+-----+---------+-------+ 
| Field   | Type   | Null | Key | Default | Extra | 
+------------------+--------------+------+-----+---------+-------+ 
| ID   | bigint(19) | NO | PRI | NULL |  | 
| STATUS   | varchar(120) | YES |  | NULL |  | 
| PRIORITY   | varchar(120) | YES |  | NULL |  | 
| DESCRIPTION  | text   | YES |  | NULL |  | 

私は以下のクエリを実行 は、

alter table StatInfo modify column DESCRIPTION varchar(255) NULL; 

それは ERROR 1406(22001)の言葉:データが長すぎる行7

の列 '説明' ことはない切り捨てを行いますその列の値を変更してテーブルを変更します。古いバージョンと同じように動作します。

答えて

2

あなたはCHANGEを使用して、データ型を変更したり、変更すると、それは厳しい、それは、このエラー

が表示されます場合は、SQLモードをチェックする必要があるかもしれませ、MySQLはへ 変換既存の列の値にしようとします可能な限り新しいタイプです。

警告この変換によってデータが変更されることがあります。たとえば、 文字列を短くすると、値が切り捨てられることがあります。 新しいデータ型への変換が成功しないようにするには、 のデータが失われる場合は、 ALTER TABLEを使用する前に厳密なSQLモードを有効にします(5.1.6項「サーバーSQLモード」を参照)。

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

0

私は
1にあなたを示唆して)元のテーブル
3を変更します)、インサート・セレクト)
2を介して(一時的なテーブルの上に、そのテーブルのコピー)の値を復元1)

関連する問題