解决 ‘Invalid use of NULL value‘ 问题
文章目录
- 1. 复现问题
- 2. 分析问题
- 3. 解决问题
1. 复现问题
今天在修改表application_apply
中的create_gateway_application
字段的默认值,却报出如是问题Invalid use of NULL value
。
因为application_apply
是公司的数据表,不便演示。
- 因而,我在本地数据库中创建
test
数据表,并增加id
、name
和address
字段,如下代码所示:
CREATE TABLE `test` (`id` INT ( 0 ) NOT NULL auto_increment,`name` VARCHAR ( 255 ) NOT NULL,`address` VARCHAR ( 255 ) NULL,PRIMARY KEY ( `id` )
);
Query OK, 0 rows affected (0.05 sec)
- 向
test
表中增加两条数据,如下代码所示:
insert into test(name,address) value('陈希尔','江苏省无锡市新吴区旺庄路');
Query OK, 1 row affected (0.01 sec)mysql> insert into test(name) value('念兮为美');
Query OK, 1 row affected (0.01 sec)
- 查询
test
表中的数据,如下代码所示:
mysql> select * from test;
+----+----------+--------------------------+
| id | name | address |
+----+----------+--------------------------+
| 1 | 陈希尔 | 江苏省无锡市新吴区旺庄路 |
| 2 | 念兮为美 | NULL |
+----+----------+--------------------------+
2 rows in set (0.00 sec)
- 此时,我若设置
test
表中的address
字段的默认值,并修改属性为not null
,如代码所示:
mysql> ALTER TABLE `test` MODIFY COLUMN `address` varchar(255) NOT NULL DEFAULT '江苏省无锡市经开区';
却报出如下错误:
2. 分析问题
将上述报出的问题Invalid use of NULL value
翻译成中文为无效使用空值
,为什么说是无效使用空值呢?
正如上文中查出的address
值,如下图所示:
原来test
表已存在的address
列存在为null
的值,故而,与not null
或者默认值
的设置冲突(查到的原因)。
我认为在新建数据表时,将已设置该列address
的表结构。因而,在后续进行更改时会与之前的设置发生冲突(至于为什么这里更改时不能更改,我也没太理解),因为之前我在新建表的时候将编号列的结构属性设置了。
鉴于无法设置为非空,所以通过新建列并设置好not null
,便可以成功。
3. 解决问题
使用如下方式解决问题:
- 将出错的列内容复制到新列中并删除出错列。
- 创建名为
address_cp
的新列
mysql> ALTER TABLE `test` ADD COLUMN `address_cp` varchar(255) NOT NULL DEFAULT '江苏省无锡市经开区' COMMENT '地址' AFTER `address`;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
- 使用
ifnull()
函数将address
列的所有值复制到address_cp'
列
mysql> update test set address_cp = ifnull(address,'江苏省无锡市经开区');
Query OK, 1 row affected (0.01 sec)
Rows matched: 3 Changed: 1 Warnings: 0
- 删除
address
列
mysql> alter table test drop address;
Query OK, 0 rows affected (0.15 sec)
Records: 0 Duplicates: 0 Warnings: 0
- 修改新列名称为出错列
- 修改
address_cp
列为address
mysql> alter table test change column address_cp address varchar(255) NOT NULL DEFAULT '江苏省无锡市经开区' COMMENT '地址';
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
- 新增数据时,不输入
address
值,其会采用默认值
mysql> insert into test(name) value('奔驰cc');
Query OK, 1 row affected (0.00 sec)
- 查看数据,第3行的address就是采用默认值
mysql> select * from test;
+----+----------+--------------------------+
| id | name | address |
+----+----------+--------------------------+
| 1 | 陈希尔 | 江苏省无锡市新吴区旺庄路 |
| 2 | 念兮为美 | 江苏省无锡市经开区 |
| 3 | 奔驰cc | 江苏省无锡市经开区 |
+----+----------+--------------------------+
3 rows in set (0.00 sec)
解决 ‘Invalid use of NULL value‘ 问题相关推荐
- spring security CSRF 问题 Invalid CSRF Token 'null' was found on ......
1. 问题 前面几篇博客 spring security在集成spring boot的微服务框架后,实现了cas认证和权限控制.但是在使用 postman 进行调用的时候出现这个问题 HTTP Sta ...
- 完美解决Invalid layout of java.lang.String at value问题的方法
完美解决Invalid layout of java.lang.String at value问题的方法 参考文章: (1)完美解决Invalid layout of java.lang.String ...
- 解决INVALID BOUND STATEMENT (NOT FOUND)(MYBATIS的MAPPER绑定问题)
解决INVALID BOUND STATEMENT (NOT FOUND)(MYBATIS的MAPPER绑定问题) 参考文章: (1)解决INVALID BOUND STATEMENT (NOT FO ...
- invalid use of null value
给mysql的数据表的一个字段插入数据,不成功, 然后在数据表设计中,把不是null勾选上,又提示 invalid use of null value 这种情况比较尴尬 只能删掉这一个字段,然后新建一 ...
- Handshake failed due to invalid Upgrade header: null 解决方案
Handshake failed due to invalid Upgrade header: null 解决方案 参考文章: (1)Handshake failed due to invalid U ...
- 解决invalid url domain
解决invalid url domain的方案 获取url的时候去掉#号后面的数据 let url = window.location.href.split('#')[0] 1.检查后台是否设置:右上 ...
- 解决Invalid bound statement (not found): com.cqupt.ssm.dao.UserDao.queryMenu问题
解决Invalid bound statement (not found): com.cqupt.ssm.dao.UserDao.queryMenu问题 参考文章: (1)解决Invalid boun ...
- 解决“Invalid bound statement (not found): com.lzj.admin.mapper.GoodsMapper.getGoodsInfoById”报错
解决"Invalid bound statement (not found): com.lzj.admin.mapper.GoodsMapper.getGoodsInfoById" ...
- FTP中MLST概要解读---解决获取ftpFile为null的另外一种方式
零.引言 之前写FTP工具库,用的是ftp4j,他使用其他非常简单方便,但是在细节上提供的可选项比较少(当然也可能是我了解不够深刻) 最新的项目重写了FTP工具类,选择了apache net中的ftp ...
最新文章
- 【C 语言】二级指针案例 ( 字符串切割 | 返回 二维数组 作为结果 )
- zookeper安装_ZooKeeper安装和配置
- python使用pip安装包_12.2.1 使用pip安装Python包
- UITableViewCell高度自适应变化
- cisco 交换机 获取 转发表_看完这份1113页的TCP/IP协议+路由与交换机,成功上岸字节跳动...
- bp神经网络预测模型实例,bp神经网络模型的建立
- 手势控制鼠标(源码)
- Python实现二维码扫码登录
- 站在思想层面看MVX架构
- args.verbose 的意思
- Android、IOS和Java三个平台一致的加密工具
- GB:香港城市大学孙燕妮组发表高准确度病毒株识别工具VirStrain
- win10分屏设置一边竖屏_win10两个显示器横屏和竖屏拓展
- WebJars简介 —— 前端资源的jar包形式
- 动态规划_ 选出一些数相加,问最后是m的倍数的方案有多少种
- [java] 分布式id生成方案
- 《PyTorch深度学习实践》 课堂笔记 Lesson7 神经网络多维特征输入的原理推导与实现
- 手把手教你使用 EndNote X9
- 爬虫微课5小时 python学习路线-余强-专题视频课程
- 无为一中2021高考成绩查询,高考成绩出来啦!2017无为各中学高考成绩喜报!!给所有教师点赞!!!...