我使用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错误还是我做错了什么?
答案 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模式的值并保存。
但是,这仅用于测试目的,一旦服务器重新启动,设置将恢复为原始值;因此需要更改配置文件。