【问题标题】:Error in your SQL syntax: SET Syntax (Lambda function)SQL 语法错误:SET 语法(Lambda 函数)
【发布时间】:2022-01-11 16:40:07
【问题描述】:

在使用 Lambda 函数时,我尝试运行以下查询,但它会引发 ER_PARSE_ERROR 错误。

{

"errorType": "错误",

"errorMessage": "ER_PARSE_ERROR: 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 'SELECT DISTINCT Aj FROM ...' 附近使用的正确语法",

“跟踪”:[

const vandium = require('vandium');

var mysql = require('mysql');
var connection = mysql.createConnection({ multipleStatements: true });

exports.handler = vandium.generic()
    .handler((event, context, callback) => {

        var connection = mysql.createConnection({
            host: 'xjxj',
            user: 'xjxj',
            password: 'xjxj',
            database: 'xjxj'
        });
        var x = connection.escape(event.x);
        var y= connection.escape(event.y);
        var z = connection.escape(event.z);
  connection.query("SET @"+y+"=2; SELECT DISTINCT A.j FROM A INNER JOIN B, C WHERE A.j = B.j and C.x= " + x + " and C.y="+y+"  and C.z= " + z + "", function (error, results, fields) {
            if (error) {
                connection.destroy();
                throw error;
            }
            else {
                console.log(results);
                callback(null, results);
            }
        });
    });

我还想到了类似的东西: ... "SET @y=2;..." 但是否定的

我正在尝试在类似的线路上实现一些东西:

SET @y := @k :=79;SELECT DISTINCT A.j FROM A INNER JOIN B, C WHERE A.j = B.j and C.x= " + x + " and C.y="+y+"  and C.z= " + z + "

当然,第一个代码块中没有 k,但这是粗略的想法。

出了什么问题?

【问题讨论】:

  • 为什么 SQL 语法错误标记为javascript
  • @Andreas,因为这段代码在 javascript 中
  • 请添加完整的错误信息并显示连接字符串
  • @nbk 已编辑,请检查
  • 更新您的问题并为您的查询添加完整的 sql 代码 ..(也是 where 之后的代码.....)

标签: javascript mysql node.js amazon-web-services node-mysql


【解决方案1】:

您的代码似乎错误,您正在混合基于隐式连接的表名,以逗号分隔,where 条件和基于 JOIN 和 ON 子句的显式连接,并且您指的是查询中未包含的表名 something..

您应该使用正确、显式的连接子句并为列使用正确的表名

"SELECT DISTINCT A.j 
FROM A
INNER JOIN B on A.j = B.j
INNER JOIN C ON c.X= " + x +" and c.y = " +y + " and c.z="+z+";

【讨论】:

  • 但是SET @id =2; 是必不可少的呢?
  • 如果你的数据库允许多个命令..你可以添加 SET @id =2;在其他 sql 命令之前.... ..
  • 这样不行,这是问题所在
  • 如果没有 SET @id =2 的情况下没有 sql 错误; ..但是这个命令有错误..那么你应该检查你的db env是否允许多个sql命令..否则如果你在sql中有错误你应该更新你的问题并添加完整的sql代码......不仅仅是一个bief部分
  • 已编辑,请检查
猜你喜欢
  • 1970-01-01
  • 2020-11-05
  • 2015-10-03
  • 2015-08-22
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多