我升级了我的Mac,因此升级了我的MySQL版本。现在,来自可信PHP书的这个INSERT示例会产生错误。它之前没有。为什么?
我从MySQL版本5.6.36到5.7.19。 MySQL版本的更改是否会导致INSERT中断?
这是“PHP和MySQL Web开发”一书中的一个例子
这是数据库:
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):字段'地址'没有默认值
通过PHP运行查询时出现此错误
警告:mysqli_query():/ Users / laptop / Sites /...中的空查询
我错过了什么或做错了什么?谢谢
答案 0 :(得分:1)
NOT NULL - 每行必须包含该列的值,不允许使用空值
https://www.w3schools.com/php/php_mysql_create_table.asp
@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