【问题标题】:Error: ER_BAD_FIELD_ERROR: Unknown column 'asd123' in 'field list' in node js错误:ER_BAD_FIELD_ERROR:节点 js 中“字段列表”中的未知列“asd123”
【发布时间】: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' ,请帮助

【问题讨论】:

    标签: mysql sql node.js


    【解决方案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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 2014-05-26
      • 2016-02-13
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多