我升级了我的Mac,从而升级了我的MySQL版本。现在,这个来自受信任PHP书籍的插入示例会产生一个错误。以前不是这样的。为什么?
我从MySQL版本5.6.36转到5.7.19。MySQL版本的更改会导致插入中断吗?
这是“PHP开发”一书中的一个例子。
这是数据库:
DESCRIBE customers;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| customerid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | char(50) | NO | | NULL | |
| address | char(100) | NO | | NULL | |
| city | char(30) | NO | | NULL | |
+------------+------------------+------+-----+---------+----------------+这是从Bash终端发出的插入:
INSERT INTO customers (name, city) values ('Melissa Jones', 'Nar Nar Goon North');此错误:
错误1364 (HY000):字段'address‘没有默认值
在通过PHP运行查询时,我会得到这个错误
警告: mysqli_query():在/Users/膝上型计算机/站点/.
我错过了什么或者做错了什么?谢谢
发布于 2017-08-15 03:00:51
NULL -每行必须包含该列的值,不允许空值
正如@Barmar所指出的,address字段具有NOT NULL属性,在插入行时应该包含值。
INSERT INTO customers (name, address, city) values ('Melissa Jones', 'the_address', 'Nar Nar Goon North');在编写脚本时,有可能生成一个额外的NOT,它应该是:
CREATE TABLE customers (
customerid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name CHAR(50) NOT NULL,
address CHAR(100) NULL,
city CHAR(30) NOT NULL
) 注意:将name、city和address作为CHAR类型字段是不好的。阅读这里的原因:https://dev.mysql.com/doc/refman/5.7/en/char.html
https://stackoverflow.com/questions/45685816
复制相似问题