MySQL升级会导致INSERT语句中断吗?
我升级了我的Mac,因此升级了我的MySQL版本。现在,这个来自可信PHP书籍的插入示例产生了一个错误。以前没有。为什么? 我从MySQL版本5.6.36升级到5.7.19。MySQL版本中的更改是否会导致插入中断 这是“PHP和MySQL Web开发”一书中的一个示例 这是数据库:MySQL升级会导致INSERT语句中断吗?,mysql,Mysql,我升级了我的Mac,因此升级了我的MySQL版本。现在,这个来自可信PHP书籍的插入示例产生了一个错误。以前没有。为什么? 我从MySQL版本5.6.36升级到5.7.19。MySQL版本中的更改是否会导致插入中断 这是“PHP和MySQL Web开发”一书中的一个示例 这是数据库: DESCRIBE customers; +------------+------------------+------+-----+---------+----------------+ | Field
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:您的意思是当其他网站的内容质量更高时,我们不能链接到其他网站吗?我们只是链接一个内容较低的网站?