不同mysql服务器版本的默认值

时间:2015-07-02 07:46:09

标签: php mysql

我有一个php项目,我使用自制的mysqli扩展包装器。它适用于选择更新删除语句,但不适用于插入

例如,我有一个包含三个字段的表 - id,name,surname。 插入查询如下所示:

$add = new SqlQuery();
$add->addField('id', 1);
$add->addField('name', 'Alex');
$add->execute();

并且它总是失败,因为sql server没有surname字段的默认值 但出于某些神秘的原因,此代码适用于生产服务器。

不同的mysql服务器版本的默认值设置是否有任何差异?
或者,是否有任何选项或参数,我如何管理mysql服务器的这种行为?

2 个答案:

答案 0 :(得分:0)

您可以为姓氏字段指定默认值,也可以自己插入占位符值。

否则,在MySQL方面,insert语句总是会失败。我不确定为什么它在您的生产服务器上工作,如果确实没有指定默认值,但我认为在您的数据中留下这些漏洞是不好的做法。

因此,即使用户没有给出或者没有指定您应该存储的某些数据,我建议您自己选择一个默认占位符 - 无论是普通的NULL值还是空字符串或其他什么,但它如果您已正确设置,将更容易使用您的数据。

答案 1 :(得分:0)

这是数据库配置。属性称为sql_mode,更确切地说是 - strict_trans_tables或strict_all_tables。如果启用了任何此选项,则数据库将在这种情况下抛出错误(查看问题)并在禁用选项时发出警告。

有参考http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables