MySQL升级会导致INSERT语句中断吗?

MySQL升级会导致INSERT语句中断吗?,mysql,Mysql,我升级了我的Mac,因此升级了我的MySQL版本。现在,这个来自可信PHP书籍的插入示例产生了一个错误。以前没有。为什么? 我从MySQL版本5.6.36升级到5.7.19。MySQL版本中的更改是否会导致插入中断 这是“PHP和MySQL Web开发”一书中的一个示例 这是数据库: DESCRIBE customers; +------------+------------------+------+-----+---------+----------------+ | Field

我升级了我的Mac,因此升级了我的MySQL版本。现在,这个来自可信PHP书籍的插入示例产生了一个错误。以前没有。为什么?

我从MySQL版本5.6.36升级到5.7.19。MySQL版本中的更改是否会导致插入中断

这是“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/…中的空查询


我错过了什么或做错了什么?谢谢

非空-每行必须包含该列的值,不允许空值

正如@Barmar在评论中指出的那样,
地址
字段具有
非空
属性,并且在插入行时应该包含值

INSERT INTO customers (name, address, city) values ('Melissa Jones', 'the_address', 'Nar Nar Goon North');
在编写脚本时,您可能会额外添加一个
而不是
,它应该是:

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
) 

注意:将
名称
城市
地址
设为
字符
类型字段不好。在这里阅读原因:

地址字段不允许空值,但是您已经用
默认空值声明了它。MySQL 5.7中设置的默认值有很多更改。MySQL 5.7的列表确实让事情变得紧张了很多。我看到CI和EE中的应用程序由于SQL不好而立即中断,SQL 5.5接受,但5.7拒绝。看来甲骨文公司终于又一次将其塑造成了一个样子。我学到了一些新东西。我看到了地址。但由于我使用的是一本书中的一个示例,所以我认为它不会错,特别是因为它在升级之前就起作用了。我复习了MySQL笔记。sql_模式的一个变化似乎就是这个问题。我更改了模式以匹配上一版本的模式,当从Bash而不是PHP发出时,错误消失了。@Hispanic100您确定它有相同的带有
notnull
属性的表吗?是的。我只是仔细检查了一下。都是用图书代码创建的。感谢当w3schools的质量更高、保持最新且包含有价值的社区评论以澄清其他令人困惑的问题时,请避免链接到w3schools。@tadman:您的意思是当其他网站的内容质量更高时,我们不能链接到其他网站吗?我们只是链接一个内容较低的网站?