【MySQL】警告: 1681 - XXX is deprecated and will be removed in a future release.

(一)MySQL version

MySQL Server 8.0.29

MySQL Workbench 8.0.29

(二)语句及问题

1. 语句:

#5月17日学习

#创建大气质量表
use test;
create table Monthly_Indicator(
 city_name varchar(20) NOT NULL,
 month_key date NOT NULL,
 aqi int(4) DEFAULT 0,
 aqi_range varchar(20) NOT NULL,
 air_quality varchar(20) NOT NULL,
 pm25 float(6,2) DEFAULT 0,
 pm10 float(6,2) DEFAULT 0,
 so2 float(6,2) DEFAULT 0,
 co float(6,2) DEFAULT 0,
 no2 float(6,2) DEFAULT 0,
 o3 float(6,2) DEFAULT 0,
 ranking int(4) DEFAULT 0,
 PRIMARY KEY(city_name,month_key)
 );

2. 问题:

警告1:1681 Integer display width is deprecated and will be removed in a future release. 

警告2:1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. 

(三)原因

警告1:1681 Integer display width is deprecated and will be removed in a future release. 

( 翻译:Integer display width已弃用,将在未来版本中删除。)

  • int(M):在指定字段为整型时,限制该字段显示的数据宽度为M,即display width;
  • 例子phone_number int(11),意味着phone_number在查询时会显示11位数字。如果实际phone_number数字比11个少,会自动填充0补足11位;如果实际phone_number数字比11个多,则会显示其实际的数字个数;
  • 注意区分:int(M)中的M只是人为指定的显示宽度,并不是int类型存储的范围。即:无论指定多大的显示宽度,int都占4字节长度(32位);

MySQL从8.0.17开始就不建议对int指定显示宽度,也将在未来的版本中删除这一个规则。因此,我们只需要把int(M)中的M删掉就好;

警告2: 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. 

(翻译:不推荐为浮点数据类型指定位数,并将在将来的版本中删除。)

  • float(m,d):指定字段为浮点型时,限制该字段数字总个数为m,其中小数位数为d;
  • 例子:float(4,2)的范围是-99.99到99.99。当录入数字不符合指定条件时,会对数字进行四舍五入后保存,如在float(4,2)列内录入9.009,近似后保存的结果为9.01。
  • 浮点数据类型的缺陷:由于float和double都存在四舍五入的情况,因此容易使数据产生误差。如果希望保存高精度的数据,请使用decimal数据类型;

由于注意到浮点数据类型的缺陷,MySQL团队自8.0.17开始宣布将取消掉对浮点数据类型指定位数的操作。因此,我们只需要把float(m,d)改成float就好;

(四)解决方案

#5月17日学习

#创建大气质量表
use test;
create table Monthly_Indicator(
 city_name varchar(20) NOT NULL,
 month_key date NOT NULL,
 aqi int DEFAULT 0,
 aqi_range varchar(20) NOT NULL,
 air_quality varchar(20) NOT NULL,
 pm25 float DEFAULT 0,
 pm10 float DEFAULT 0,
 so2 float DEFAULT 0,
 co float DEFAULT 0,
 no2 float DEFAULT 0,
 o3 float DEFAULT 0,
 ranking int DEFAULT 0,
 PRIMARY KEY(city_name,month_key)
 );

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值