如何使表不在phpmyadmin中的非空集字段中取空值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使表不在phpmyadmin中的非空集字段中取空值?相关的知识,希望对你有一定的参考价值。
我在phpmyadmin中创建了一个表,其中没有空值设置值,但是当我使用插入查询插入数据时,它仍然采用空值。 怎么解决这个?
sql用于创建表:
CREATE TABLE exmp.student ( id INT( 12 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
name VARCHAR( 200 ) NOT NULL ,
user_name VARCHAR( 200 ) NOT NULL ,
branch VARCHAR( 200 ) NOT NULL )
插入查询:
INSERT INTO exmp.student( name ) VALUES ( 'harjeet' )
它在表中没有显示错误的价值。
当您运行插入查询时,它将为user_name
和branch
列插入空字符串。我能够复制这个。
如果运行此查询,显式将非空列设置为null,则会返回错误:
INSERT INTO student( name, user_name, branch ) VALUES ( 'harjeet', null, null )
请参阅Data Type Default Values的mysql 5.0参考:
从MySQL 5.0.2开始,如果列定义不包含显式DEFAULT值,MySQL将确定默认值,如下所示:
如果列可以将NULL作为值,则使用显式DEFAULT NULL子句定义该列。这与5.0.2之前相同。
如果列不能将NULL作为值,则MySQL定义没有显式DEFAULT子句的列。例外:如果列被定义为PRIMARY KEY的一部分但未显式为NOT NULL,则MySQL将其创建为NOT NULL列(因为PRIMARY KEY列必须为NOT NULL),但也使用隐式默认值为其分配DEFAULT子句值。要防止这种情况,请在任何PRIMARY KEY列的定义中包含显式的NOT NULL。
对于没有显式DEFAULT子句的NOT NULL列的数据输入,如果INSERT或REPLACE语句不包含该列的值,或者UPDATE语句将列设置为NULL,则MySQL将根据有效的SQL模式处理该列。时间:
如果启用了严格的SQL模式,则事务表会发生错误,并且会回滚该语句。对于非事务性表,会发生错误,但如果多行语句的第二行或后续行发生这种情况,则会插入前面的行。
如果未启用严格模式,MySQL会将列设置为列数据类型的隐式默认值。
所以看起来你的MySql没有启用严格模式。 varchar
列的隐式默认值是空字符串,因此这是使用的。如果您希望它返回错误,请打开字符串模式。
INSERT
声明是真正的INSERT
使用的吗?你创建的表是exmp.student
。 INSERT使用student
(不使用exmp
架构)。
可能有另一个学生表允许NULL
值?
以上是关于如何使表不在phpmyadmin中的非空集字段中取空值?的主要内容,如果未能解决你的问题,请参考以下文章
Mysql从php脚本插入空白字段,但不在phpmyadmin中?