2011-07-13 4 views
2

Je change une colonne de texte en colonne varchar.mysql: Les données sont trop longues pour la colonne sur alter table modifier la colonne

+------------------+--------------+------+-----+---------+-------+ 
| 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 |  | 

quand j'exécuter la requête ci-dessous,

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

Il dit erreur 1406 (22001): données trop long pour la colonne 'Description' à la ligne 7

Il n'a pas d'tronque la valeur dans la colonne et modifie la table pourquoi ?. où, comme dans la version plus ancienne, cela fonctionne.

Répondre

2

Peut être que vous devez vérifier le mode sql, si elle stricte, alors il affichera cette erreur

Lorsque vous modifiez un type de données à l'aide CHANGE ou MODIFY, MySQL essaie de convertir les valeurs des colonnes existantes à la nouveau type aussi bien que possible.

Avertissement Cette conversion peut entraîner une modification des données. Par exemple, si vous raccourcissez une colonne de chaîne, les valeurs peuvent être tronquées. Pour empêcher que l'opération réussisse si les conversions au nouveau type de données entraînent une perte de données, activez le mode SQL strict avant d'utiliser ALTER TABLE (reportez-vous à la Section 5.1.6, «Modes SQL du serveur»).

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

0

Je vous suggère
1) Copiez cette table sur une table temporaire (par un insert de sélection)
2) Modifier la table d'origine
3) Restaurer les valeurs dans la tableau original en utilisant la même procédure décrite en 1)

Questions connexes