mysql中not-null插入问题
来源:互联网 发布:章鱼搜索网络错误 编辑:程序博客网 时间:2024/05/22 11:17
mysql表结构中not null插入的问题
问题
mysql> desc t_info;+-------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+--------------+------+-----+---------+-------+| name | varchar(255) | NO | | NULL | || age | int(11) | NO | | NULL | || addr | varchar(255) | YES | | NULL | |+-------+--------------+------+-----+---------+-------+3 rows in setmysql> insert into t_info(addr) values ('上海');Query OK, 1 row affectedmysql> select * from t_info;+------+-----+------+| name | age | addr |+------+-----+------+| | 0 | 上海 |+------+-----+------+1 row in setmysql> insert into t_info (name, age, addr) values(null, null, '北京');1048 - Column 'name' cannot be nullmysql> insert into t_info (name, age, addr) values('', null, '北京');1048 - Column 'age' cannot be nullmysql> insert into t_info (name, age, addr) values('', 12, '北京');Query OK, 1 row affectedmysql> select * from t_info;+------+-----+------+| name | age | addr |+------+-----+------+| | 0 | 上海 || | 12 | 北京 |+------+-----+------+2 rows in set
what?我明明是设置了表结构中nama和age字段是not null的,发生了什么?怎么可能将’上海’这条数据插入?应该是要报错的!!!
mysql> show create table t_info;+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------+| t_info | CREATE TABLE `t_info` ( `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `addr` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set
原因
查了一下资料,原来是mysql的sql_mode的设置问题
mysql> show variables like '%str%';+--------------------+-------+| Variable_name | Value |+--------------------+-------+| innodb_strict_mode | OFF |+--------------------+-------+1 row in setmysql> select @@sql_mode;+------------------------+| @@sql_mode |+------------------------+| NO_ENGINE_SUBSTITUTION |+------------------------+1 row in set
需要将sql_mode设置成STRICT_TRANS_TABLES
,即严格模式,进行数据的严格校验,错误数据不能插入,报error错误
mysql> set @@sql_mode=STRICT_TRANS_TABLES;Query OK, 0 rows affected//临时设置,重启失效!!永久设置需修改配置文件my*.ini文件mysql> select @@sql_mode;+---------------------+| @@sql_mode |+---------------------+| STRICT_TRANS_TABLES |+---------------------+1 row in setmysql> insert into t_info(addr) values('江西');1364 - Field 'name' doesn't have a default value
NICE!!!
阅读全文
0 0
- mysql中not-null插入问题
- MySQL timestamp NOT NULL插入NULL的问题
- MySQL timestamp NOT NULL插入NULL的问题
- MySQL中NULL和NOT NULL探究
- MySQL入门--插入记录的时候NULL与NOT NULL
- MySQL入门--插入记录的时候NULL与NOT NULL
- mysql 【null】【not null】 ""
- Mysql插入NULL值的问题
- mysql not in null 子查询问题
- MySql中IS NOT NULL与!=NULL的区别
- mysql中null与not null的区别及效率
- oracle中not in(null)问题
- oracle中not in(null)问题
- hive中使用is null和is not null问题
- hive中使用is null和is not null问题
- mysql null与not null
- mysql null和not null
- mysql <> null != null is not null
- 计算并输出半径r=6.2的圆的周长和面积
- 我是如何在Ctrlbox开发者联盟工作的
- CRC 在线计算器
- aliyun centos mysql 安装问题及解决方案
- 权限控制器AccessController
- mysql中not-null插入问题
- fullpage.js插件使用——菜单绑定
- mips架构linux启动分析(二)
- 大小写英文字母之间的转换
- 知识点杂碎集
- 小白学数据结构——四、排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)
- 树形结构的处理——组合模式(五)
- java判断字符串是否为空的方法总结
- 智和网管平台-真正开放源码的网元管理系统(EMS)