【问题标题】:Sails API fetch error (500) ER_BAD_FIELD_ERRORSails API 获取错误 (500) ER_BAD_FIELD_ERROR
【发布时间】:2015-03-01 16:32:03
【问题描述】:

我是sails 的初学者,我正在尝试使用sails 和mysql 创建我的第一个API。我尝试在我的 mysql 控制台中创建表并对 configuration.js 文件进行配置,并尝试在 chrome 浏览器中从 POSTMAN 访问 API。我从sails 服务器收到以下错误。我的查询没有该字段,并且不确定这些字段是否是标准字段并附加到查询中,并且不确定如何自动将它们创建为表的一部分。

error: Sending 500 ("Server Error") response:
 Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_BAD_FIELD_ERROR: Unknown column 'message.createdAt' in 'field list'
    at Query.Sequence._packetToError (C:\MyApi\node_modules\sails-mysql\node_mod
ules\mysql\lib\protocol\sequences\Sequence.js:48:14)
    at Query.ErrorPacket (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\l
ib\protocol\sequences\Query.js:82:18)
    at Protocol._parsePacket (C:\MyApi\node_modules\sails-mysql\node_modules\mys
ql\lib\protocol\Protocol.js:271:23)
    at Parser.write (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\lib\pr
otocol\Parser.js:77:12)
    at Protocol.write (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\lib\
protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\
lib\Connection.js:82:28)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:765:14)
    at Socket.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:427:10)
    at emitReadable (_stream_readable.js:423:5)
    at readableAddChunk (_stream_readable.js:166:9)
    at Socket.Readable.push (_stream_readable.js:128:10)
    at TCP.onread (net.js:529:21)
    --------------------
    at Protocol._enqueue (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\l
ib\protocol\Protocol.js:135:48)
    at PoolConnection.Connection.query (C:\MyApi\node_modules\sails-mysql\node_m
odules\mysql\lib\Connection.js:185:25)
    at __FIND__ (C:\MyApi\node_modules\sails-mysql\lib\adapter.js:836:20)
    at afterwards (C:\MyApi\node_modules\sails-mysql\lib\connections\spawn.js:84
:5)
    at C:\MyApi\node_modules\sails-mysql\lib\connections\spawn.js:40:7
    at Ping.onPing [as _callback] (C:\MyApi\node_modules\sails-mysql\node_module
s\mysql\lib\Pool.js:94:5)
    at Ping.Sequence.end (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\l
ib\protocol\sequences\Sequence.js:96:24)
    at Ping.Sequence.OkPacket (C:\MyApi\node_modules\sails-mysql\node_modules\my
sql\lib\protocol\sequences\Sequence.js:105:8)
    at Protocol._parsePacket (C:\MyApi\node_modules\sails-mysql\node_modules\mys
ql\lib\protocol\Protocol.js:271:23)
    at Parser.write (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\lib\pr
otocol\Parser.js:77:12)
    at Protocol.write (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\lib\
protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\MyApi\node_modules\sails-mysql\node_modules\mysql\
lib\Connection.js:82:28)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:765:14)
    at Socket.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:427:10)

Details:  Error: ER_BAD_FIELD_ERROR: Unknown column 'message.createdAt' in 'fiel
d list'

但我收到上述错误,下面是我的表格。

mysql> desc message
    -> ;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| name  | varchar(20) | YES  |     | NULL    |                |
| id    | int(4)      | NO   | PRI | NULL    | auto_increment |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.03 sec)

我在模型 message.js 中有以下代码

module.exports = {
connection: 'someMysqlServer',
  attributes: {
        name: { type: 'string',
                 required: true}

  }
};

【问题讨论】:

    标签: sails.js


    【解决方案1】:

    您可能在该连接上设置了migrate: safe,这意味着 Sails 无法更改您创建的 MySQL 表。这很好,除了 Sails 查询包括迁移器通常添加的 createdAtupdatedAt 字段。您可以手动将这些列添加到表中(使用 datetime 类型)或将以下内容添加到模型配置中:

    autoCreatedAt: false,
    autoUpdatedAt: false
    

    有关这些字段的更多信息in the docs

    【讨论】:

    • 非常感谢您的回答,我通过将这些列添加到表格中解决了这个问题。是的,你是对的,当我升帆时,我曾迁移过鼠尾草。
    【解决方案2】:

    当 liftng 航行时,它会提示输入数字 1 表示安全 2 进行这样的实验..选择 2 它会工作..对我有用..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2016-02-04
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多