错误:ER_BAD_FIELD_ERROR:节点 js 中“字段列表”中的未知列“asd123”
Posted
技术标签:
【中文标题】错误:ER_BAD_FIELD_ERROR:节点 js 中“字段列表”中的未知列“asd123”【英文标题】:Error: ER_BAD_FIELD_ERROR: Unknown column 'asd123' in 'field list' in node js 【发布时间】:2012-11-09 09:20:00 【问题描述】:当我尝试在 phpmyadmin 中更新表时收到此错误
谁能告诉我怎么了
这是桌子
create table ms_registereduser(userID Varchar(10),socketID Varchar(255));
这是我的 server.js
var http = require("http");
var mysql = require('mysql');
var connection = mysql.createConnection(
host : 'localhost',
user : 'root',
password : '',
database : 'pushnotificationdb'
);
var userID = "1234567890",
socketID = "asd123";
http.createServer(function(request, response)
response.writeHead(200, "Content-Type": "text/plain");
response.write("Hello World");
response.end();
).listen(1111);
connection.connect();
connection.query('callpushnotificationdb.spUpdateSocketID('+userID+','+socketID+');').on('end',function()
console.log('User '+ userID+' has updated his socketID to '+socketID);
);
connection.end();
这是我的 spUpdateSocketID,以 '//' 作为分隔符
DROP PROCEDURE IF EXISTS spUpdateSocketID//
CREATE PROCEDURE spUpdateSocketID(IN userID Varchar(10) ,IN socketID Varchar(255))
BEGIN
set @userID = userID;
set @socketID = socketID;
set @s = CONCAT('UPDATE ms_registereduser SET socketID = @socketID WHERE userID = @userID');
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
如果我尝试像这样在 phpmyadmin 中调用该过程
call pushnotificationdb.spUpdateSocketID('1234567890','asd123');
它有效,但如果我尝试从 node.js 调用它,它会给我这样的错误 Error: ER_BAD_FIELD_ERROR: Unknown column 'asd123' in 'field list' ,请帮助
【问题讨论】:
【参考方案1】:试试这个:
DROP PROCEDURE IF EXISTS spUpdateSocketID//
CREATE PROCEDURE spUpdateSocketID(IN _userID VARCHAR(10) ,IN _socketID VARCHAR(255))
BEGIN
UPDATE ms_registereduser SET socketID = _socketID WHERE userID = _userID;
END//
按照下面提到的方式重写你的程序并尝试运行它:
DROP PROCEDURE IF EXISTS spUpdateSocketID//
CREATE PROCEDURE spUpdateSocketID(IN userID VARCHAR(10) ,IN socketID VARCHAR(255))
BEGIN
SET @s = CONCAT("UPDATE ms_registereduser SET socketID = '", socketID, "' WHERE userID = '", userID, "'");
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
【讨论】:
使用创建包含相同 userId 的表示例数据更新您的问题 我已经发布了在我的代码中使用的创建表语法,并且我已经尝试了你的新代码版本,仍然遇到同样的错误【参考方案2】:试试下面的查询,变量'+userID+'
和'+socketID+'
被修改为"'+userID+'"
和"'+socketID+'"
:
connection.query(
'callpushnotificationdb.spUpdateSocketID("'+userID+'","'+socketID+'");'
)
.on('end',function()
console.log('User '+ userID+' has updated his socketID to '+socketID);
);
【讨论】:
以上是关于错误:ER_BAD_FIELD_ERROR:节点 js 中“字段列表”中的未知列“asd123”的主要内容,如果未能解决你的问题,请参考以下文章
ER_BAD_FIELD_ERROR:“字段列表”中的未知列
SailsJS/MySQL:“字段列表”中的未知列“NaN”