我有一个用PHP构建的学校管理软件。当我在我的本地服务器上运行它时工作正常但是当我将它上传到远程服务器时它给我一个错误:
错误号码:1364
字段'religion'没有默认值
INSERT INTO `teacher` (
`name`,
`birthday`,
`sex`,
`address`,
`phone`,
`email`,
`password`
) VALUES (
'teacher1',
'08/09/2016',
'male',
'Dir Upper Pakistan',
'0944840412',
'teacher@example.com',
'7110eda4d09e062aa5e4a390b0a572ac0d2c0220'
);
文件名:controllers / Admin.php
行号:41
此外,它在免费的虚拟主机服务器上运行良好,但在其他网络主机上,它有时会起作用,有时会出错。
答案 0 :(得分:0)
看起来问题的根源是数据库表strucutre本地环境和live之间的区别。请尝试以下解决方案之一:
1.在php中编辑您的查询以包含religion
:
INSERT INTO teacher (name, birthday, sex, address, phone, email, password, religion)
VALUES ('teacher1', '08/09/2016', 'male', 'Dir Upper Pakistan', '0944840412', 'teacher@example.com', '7110eda4d09e062aa5e4a390b0a572ac0d2c0220', 'myreligion')
2.更新您的表结构,以便将religion
字段设置为允许空值
答案 1 :(得分:0)
简单来说,数据库表中的所有字段都可以设置为默认值。如果您运行INSERT
查询并且未明确设置一个或多个字段,则数据库将尝试使用这些字段的默认值创建行。
但是,在您的情况下,数据库中的religion
字段没有定义默认值。因为你没有告诉它使用religion
的任何其他值,它不知道该怎么做。
你说它有时是有效的,有时候也不行。这可能是因为您有时会设置宗教信仰,有时可能会在您的网络表单中留空。
最佳解决方案是转到您的数据库并修改teacher
表,以便religion
的默认值为NULL
。 Null基本上意味着"没有",所以当你创建行而没有指定宗教时,它只会将NULL
放在该列中。
您可以运行SQL查询来执行此操作:
How do I modify a MySQL column to allow NULL?
或者,如果您不确定如何操作,可能您可以登录到您的网站主机帐户,并且可以选择管理数据库 - 可能通过 phpMyAdmin 。找到要编辑的数据库表,然后转到 Structure 选项卡,然后单击religion
字段上的更改或编辑 。将默认值设置为NULL
。