使用充满数据的数据库从 tinyint 更改为 smallint
Changing from tinyint to smallint with a database full of data
真是一个安心的问题。
我的数据库中有一个字段使用 tinyint(3)
作为整数值。我现在意识到这是低值,想将其更改为 smallint
。如果我使用 phpMyAdmin 更改它,是否会影响当前数据?我已经在本地尝试过,看起来不错,但我更喜欢 运行 有更多数据库经验的人。
您可以使用以下查询:
mysql> ALTER TABLE TableName MODIFY Id SMALLINT
还要确保该列是否附加了任何约束,然后您需要先删除这些约束。
您的数据 将 在某种程度上受到影响 -- 它将从 tinyint
更改为 smallint
,因此实际上整个列都将受到影响一个 CAST
操作。但它不会 受到任何截断或数据丢失的影响。
因为 tinyint
是 smallint
的子集,这个转换操作应该不会造成任何问题。如果您试图在查询中将 tinyint
值转换为 smallint
,您绝不会期望它会失败,因为每个 tinyint
也是一个 smallint
。修改您的 table 架构时,同样的逻辑也适用。
真是一个安心的问题。
我的数据库中有一个字段使用 tinyint(3)
作为整数值。我现在意识到这是低值,想将其更改为 smallint
。如果我使用 phpMyAdmin 更改它,是否会影响当前数据?我已经在本地尝试过,看起来不错,但我更喜欢 运行 有更多数据库经验的人。
您可以使用以下查询:
mysql> ALTER TABLE TableName MODIFY Id SMALLINT
还要确保该列是否附加了任何约束,然后您需要先删除这些约束。
您的数据 将 在某种程度上受到影响 -- 它将从 tinyint
更改为 smallint
,因此实际上整个列都将受到影响一个 CAST
操作。但它不会 受到任何截断或数据丢失的影响。
因为 tinyint
是 smallint
的子集,这个转换操作应该不会造成任何问题。如果您试图在查询中将 tinyint
值转换为 smallint
,您绝不会期望它会失败,因为每个 tinyint
也是一个 smallint
。修改您的 table 架构时,同样的逻辑也适用。