我收到了错误
#1364 - 字段'login_count'没有默认值
最近将PHP 5.5升级到php 7.升级后显示错误。我有下面的表格列
firstname
,middlename
,lastname
,username
,password
,email
,mobile
,added_date
,{{ 1}},login_count
当我插入表数据时出现以下错误。
status
#1364 - 字段'login_count'没有默认值
此处INSERT INTO `js_simple`
(`firstname`, `middlename`, `lastname`, `username`, `password`, `email`,
`mobile`, `added_date`)
VALUES ('Kjhjkh', 'Jkjhjkhk', 'Jkhkjhj', 'jkhjkh', 'khkjh', 'njhjhjkh@gmail.com',
'1122335566', '2017-11-29 22:59:49')
和login_count
字段未插入,表中的默认值不为null。
在升级到php7之前,它正在运行。任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
请注意,您必须具有root用户权限。
说明:
严格模式控制MySQL如何处理数据更改语句(例如INSERT或UPDATE)中的无效或缺失值。值可能由于多种原因而无效。例如,它可能具有错误的列数据类型,或者可能超出范围。当要插入的新行不包含其定义中没有显式DEFAULT子句的非NULL列的值时,缺少值。 (对于NULL列,如果缺少该值,则插入NULL。)严格模式还会影响DDL语句,例如CREATE TABLE。 (详细信息:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict)
关于查询-它将SQL模式更改为NO_ENGINE_SUBSTITUTION,即:
当诸如CREATE TABLE或ALTER TABLE之类的语句指定被禁用或未在其中编译的存储引擎时,控制默认存储引擎的自动替换。(来源:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution)
换句话说,当给出命令以禁用所有替换时,严格模式被禁用,尤其是-严格模式引擎。
请注意,理想情况下,启用严格模式是一个好习惯,因为它可以帮助开发人员创建完美的工作系统并很好地减轻服务器负载。但是在某些情况下,它会创建一些错误,这些错误可能会在调试过程中遗漏,从而在用户偶然发现这些错误时会“破坏”整个应用程序。