2

我创建了一个这样的数据库表:

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做的数据库吗?

4

1 回答 1

3

默认情况下,用零(或字符串数​​据类型的空字符串)MySQL替换隐式值。NULL

您可以通过为会话或服务器启用严格模式来解决此问题:

SET sql_mode='STRICT_ALL_TABLES'

或添加

sql_mode='STRICT_ALL_TABLES'

[mysqld]你的my.cnf.

于 2012-06-07T11:28:10.173 回答