phpMyAdmin在NOT NULL字段中接受NULL

eqzww0vc  于 2022-11-09  发布在  PHP
关注(0)|答案(2)|浏览(214)

我已经使用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的bug还是我做错了什么?

jckbn6z7

jckbn6z71#

在安装时,不能将SQL_MODE设置为strict。
问题

SET SQL_MODE='STRICT_ALL_TABLES'

或添加

SQL_MODE='STRICT_ALL_TABLES'

下的文件复制到您的文件中
要找到我的.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。

polhcujo

polhcujo2#

也许你有权限通过phpMyAdmin修改SQL模式。进入phpMyAdmin的主页,点击Variables,在过滤器中输入“SQL模式”。然后你可以通过问号访问一些解释,点击这一行,你可以编辑SQL模式的值并保存。
不过,这只是为了测试目的,一旦服务器重新启动,该设置将恢复到其原始值;因此需要更改配置文件。

相关问题