我创建了一个这样的数据库表:
CREATE TABLE test(
name VARCHAR(30) NOT NULL,
password VARCHAR(40) NOT NULL);
然后我像这样添加了它,它按预期失败了。
INSERT INTO test(name, password) VALUES ('test', NULL);
但是当我尝试这个时,插入没有问题:
INSERT INTO test(name) VALUES ('test');
我尝试以不同方式创建表格,但它没有创建:
CREATE TABLE test(
name VARCHAR(30) NOT NULL,
password VARCHAR(40) NOT NULL DEFAULT NULL );
有没有办法在插入时创建错误?
也许关联我认为我还需要做其他事情才能验证数据输入到数据库中,我想我看到了一些关于约束的东西,但我不认为这些在mysql中受支持?那么我可以用mysql做数据库的空检查和验证吗?
答案 0 :(得分:3)
默认情况下,MySQL
用零替换隐式NULL
值(或字符串数据类型为空字符串)。
您可以通过为会话或服务器启用严格模式来解决此问题:
SET sql_mode='STRICT_ALL_TABLES'
或添加
sql_mode='STRICT_ALL_TABLES'
[mysqld]
下的my.cnf