mysql修改字段类型

我要将

sql 复制代码
exchange_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True)

修改为

sql 复制代码
exchange_rate = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True) 

要将 exchange_rate 字段从 DECIMAL(10,4) 修改为 DECIMAL(10,6)可以使用以下 SQL 语句:

sql 复制代码
ALTER TABLE xss_currency_exchange_rate
MODIFY COLUMN exchange_rate DECIMAL(10,6) NULL;

完整解释:

修改字段定义:

sql 复制代码
MODIFY COLUMN exchange_rate DECIMAL(10,6) NULL

DECIMAL(10,6):新的数据类型,总位数 10 位,其中 6 位小数

NULL:保持允许空值(对应 Django 的 null=True)

重要注意事项:

1.数据安全操作流程:

sql 复制代码
-- 1. 创建备份
CREATE TABLE xss_currency_exchange_rate_backup AS
SELECT * FROM xss_currency_exchange_rate;

-- 2. 检查现有数据
SELECT MIN(exchange_rate), MAX(exchange_rate), COUNT(*)
FROM xss_currency_exchange_rate;

-- 3. 执行修改
ALTER TABLE xss_currency_exchange_rate
MODIFY COLUMN exchange_rate DECIMAL(10,6) NULL;

-- 4. 验证结果
DESC xss_currency_exchange_rate;

2.数据类型变化影响:

原类型 DECIMAL(10,4):最大存储 999999.9999

新类型 DECIMAL(10,6):最大存储 9999.999999

整数部分容量从 6 位减少到 4 位,需确保现有数据整数部分不超过 4 位

3.数据兼容性检查:

执行修改前,检查是否有数据会超出新范围:

sql 复制代码
-- 查找整数部分超过4位的数据
SELECT *
FROM xss_currency_exchange_rate
WHERE exchange_rate >= 10000 OR exchange_rate <= -10000;
相关推荐
NineData6 小时前
NineData 迁移评估功能正式上线
数据库·dba
NineData11 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师14 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石18 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_2 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou643 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
于眠牧北3 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
李广坤4 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Turnip12025 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
爱可生开源社区5 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba