【发布时间】:2015-01-08 08:40:38
【问题描述】:
这是我第一次将sails.js 与mySQL 数据库一起使用,我对这个错误感到非常困惑。
我有一个名为“公司”的控制器和模型。它与 mySQL 数据库中的表“公司”有关。该表本身与名为“模块”和“用户”的两个表具有一对多关联(每个用户/模块必须与一个公司 ID 连接)。我已经在 MySQL 数据库中设置了外键。
问题是..每次我从这个控制器打开任何页面/动作时,都会出现这个错误:
error: Sending 500 ("Server Error") response:
Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause'
at Query.Sequence._packetToError (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
at Query.ErrorPacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:82:18)
at Protocol._parsePacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:213:24)
at Parser.write (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:62:12)
at Protocol.write (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:37:16)
at Socket.<anonymous> (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:75:28)
at Socket.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:764:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:426:10)
--------------------
at Protocol._enqueue (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:110:48)
at PoolConnection.Connection.query (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:166:25)
at PoolConnection.liveConnection.query (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/connections/spawn.js:98:16)
at __FIND__ (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/adapter.js:836:20)
at afterwards (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/connections/spawn.js:104:5)
at /Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/connections/spawn.js:40:7
at Pool.<anonymous> (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/Pool.js:51:14)
at Handshake.Sequence.end (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:78:24)
at Handshake.Sequence.OkPacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:87:8)
at Protocol._parsePacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:213:24)
Details: Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause'
这是我的公司模型:
module.exports = {
attributes: {
name:{
type:"string",
required:true,
unique:true,
minLength: 2
},
type:{
type:"string",
enum: ['hq','sub'],
defaultsTo: 'hq'
},
desc:{
type:"text",
required:true
},
logo: {
type: 'string'
},
address: {
type: 'text'
},
city: {
type: 'string'
},
region: {
type: 'string'
},
country: {
type: 'string'
},
zipcode: {
type: 'string'
},
phone_number: {
type: 'string'
},
website: {
type: 'string'
}
},
};
我尝试过使用“autoPK: false”、“schema: true”、添加“columnName/fieldName”,但它们都不起作用。
错误是什么意思? 我该如何解决?
非常感谢。
【问题讨论】:
-
你能显示SQL查询代码吗?只需检查您的 where 子句!
-
如何显示SQL查询代码?我实际上只是打开 localhost:1337/company/index 页面并收到此错误
-
根据您的错误,您在 where 子句中使用了错误的列名。因此,您需要检查与数据库交互的模型代码,以确保您的 SQL 查询是正确的。
-
@PradyumnaSwain Sails.js 使用称为 Waterline 的 ORM 层。大多数使用sails 的人不会编写任何SQL 代码。所以要求他们检查他们的 SQL 代码是没有帮助的。