2

我使用 phpMyAdmin 创建了一个包含一些 NOT NULL 列的表。

CREATE TABLE `TEST` (`ID` INT PRIMARY KEY AUTO_INCREMENT, 
                     `Firstname` VARCHAR(20) NOT NULL, 
                     `Lastname` VARCHAR(20) NOT NULL)

INSERT 操作没有问题。数据库阻止正确设置 NULL 字段。

INSERT INTO `TEST`(`Firstname`, `Lastname`) VALUES ("Peter", null)

#1048 - Column 'Lastname' cannot be null

接受的是:

INSERT INTO `TEST`(`Firstname`, `Lastname`) VALUES ("Peter", "Smith")

1 row inserted. 
Inserted row id: 1 (Query took 0.0004 sec)

但是在我成功创建了一个包含非 NULL 字段的记录后,数据库允许我将这些字段更新为 NULL。

UPDATE `TEST` SET `Lastname`=NULL WHERE `ID` = 1

1 row affected. (Query took 0.0006 sec)

我也尝试过“NULL”和“NULL”,但数据库将它们作为字符串放在字段中。

我真的很困惑这个问题。这是一个 phpMyAdmin 错误还是我做错了什么?

4

2 回答 2

0

安装时不得将 SQL_MODE 设置为严格。

问题

SET SQL_MODE='STRICT_ALL_TABLES'

或添加

SQL_MODE='STRICT_ALL_TABLES'

[mysqld]进入你的my.cnf

要找到 my.cnf,请查看 MySQL 配置文件C:\xampp\mysql\bin\my.ini.

该文件的顶部是一些注释:

# You can copy this file to
# C:/xampp/mysql/bin/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is C:/xampp/mysql/data) or
# ~/.my.cnf to set user-specific options.

它告诉你在哪里可以找到你的my.cnf文件。

如有必要,重新启动您的 mysql。

于 2013-09-02T01:19:24.540 回答
0

也许您有权通过 phpMyAdmin 更改 SQL 模式。转到 phpMyAdmin 的主页(起始)页面,然后单击变量并在过滤器中输入“SQL 模式”。然后您可以通过问号访问一些解释,并通过单击此行可以编辑 SQL 模式的值并保存它。

然而这只是为了测试目的,一旦服务器重新启动,设置将恢复到原来的值;因此需要更改配置文件。

于 2013-09-02T16:05:27.033 回答