MySQL 中的 ER_NO_DEFAULT_FOR_FIELD(nodejs 休息请求)

Posted

技术标签:

【中文标题】MySQL 中的 ER_NO_DEFAULT_FOR_FIELD(nodejs 休息请求)【英文标题】:ER_NO_DEFAULT_FOR_FIELD in MySQL (nodejs rest request) 【发布时间】:2015-05-18 01:46:09 【问题描述】:

这个错误在mysql中是什么意思? ER_NO_DEFAULT_FOR_FIELD – “字段没有默认值” 我发现它在这里列出? http://mysqlserverteam.com/improvements-to-strict-mode-in-mysql/ 并得到:


    "code": "ER_NO_DEFAULT_FOR_FIELD",
    "errno": 1364,
    "sqlState": "HY000",
    "index": 0

通过 expressjs 在邮递员请求中回复,但这是我似乎从中得到的第一张桌子。该表有外键,所以我为外键设置了默认值,但我仍然得到它。是什么赋予了? index[0] 是不是暗示名字,我发给服务器的第一个json值?


    "name":"Cornwall Park Townhouses",
    "line1":"17 Brewster Rd.",
    "city":"Cornwall",
    "state":32,
    "zip":"12518",
    "category":2,
    "account_mgr":1,
    "active":1

这是我的 json

【问题讨论】:

【参考方案1】:

我猜你有一个字段需要一个值并且没有默认值。 所以当你插入你的表时,如果你没有为它提供一个有效的值,MySQL 会抱怨。

如果您向我们展示了您的表格并可能还插入了查询,那将会更有帮助,但请查看您的字段。如果您发现一个没有默认值并且您没有对其进行任何操作,请尝试插入其中并为该字段传递一个值,如果这解决了问题,那么您可以为该字段添加一个默认值或继续发送信息给它。

如果您不想要默认值,您可以将字段设置为允许 null 而不是默认值。

【讨论】:

快速的第二个问题,如果你擅长 sql 和金融系统,那么默认的方式是给自 1970 年或其他任何时间以来仍然是毫秒数的东西添加时间戳 @dkran MySQL 5.6+ 具有内置的时间戳功能,数据库可以提供默认值,粒度为秒、毫秒或微秒。 dev.mysql.com/doc/refman/5.6/en/datetime.html(5.5 之前的版本具有类似但更有限的功能)。【参考方案2】:

我遇到了同样的问题,然后我发现我有一个设置为 AutoIncremented 的字段,但我忘记设置该 Auto Incremented 所以如果你有一个需要一个值并且没有默认值的字段所以将它设置为 Auto Incremented,主键,NotNull。

【讨论】:

以上是关于MySQL 中的 ER_NO_DEFAULT_FOR_FIELD(nodejs 休息请求)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:啥时候真正需要 MySQL 中的 Flush Privileges?

16-mysql基础-mysql中的存储过程

16-mysql基础-mysql中的存储过程

mySQL在java中的应用

尝试将日期作为python中的输入并使用mysql连接器更新mysql表中的值

MySQL 5.6中的变量