【问题标题】:mysql : Data too long for column on alter table modify columnmysql:alter table modify 列上的列数据太长
【发布时间】:2011-10-04 12:28:42
【问题描述】:

我正在将一列从 text 更改为 varchar 列。

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

它说 错误 1406 (22001):第 7 行的“描述”列的数据太长

它不会截断列中的值并更改表,为什么?与旧版本一样。

【问题讨论】:

    标签: mysql alter-table


    【解决方案1】:

    我建议你
    1) 将该表复制到临时表上(通过插入选择)
    2) 更改原表
    3) 使用 1)

    中描述的相同过程恢复原始表中的值

    【讨论】:

      【解决方案2】:

      可能你需要检查一下sql模式,如果严格就会显示这个错误

      当您使用 CHANGE 或 MODIFY 更改数据类型时,MySQL 会尝试 尽可能将现有列值转换为新类型。

      警告 此转换可能会导致数据更改。例如, 如果缩短字符串列,值可能会被截断。阻止 如果转换为新数据类型,则操作成功 会导致数据丢失,使用前开启严格的SQL模式 ALTER TABLE(请参阅第 5.1.6 节,“服务器 SQL 模式”)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-09
        • 2021-11-06
        • 1970-01-01
        • 2023-02-08
        • 2013-09-24
        • 2015-09-24
        相关资源
        最近更新 更多