phpMyAdmin在NOT NULL字段中接受NULL

时间:2013-09-02 01:10:57

标签: mysql sql database phpmyadmin

我使用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错误还是我做错了什么?

2 个答案:

答案 0 :(得分:0)

您的安装不能将SQL_MODE设置为strict。

问题

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。

答案 1 :(得分:0)

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

但是,这仅用于测试目的,一旦服务器重新启动,设置将恢复为原始值;因此需要更改配置文件。