node-mysql: несколько запросов операторов, ER_PARSE_ERROR - PullRequest
1 голос
/ 16 октября 2019

Я пытаюсь выполнить многократный запрос к базе данных MySQL. Я использую node-mysql и ExpressJS. Я включил несколько запросов операторов, установив для множественного состояния значение true:

const connection = mysql.createPool(config.databaseOptions, {multipleStatements: true});

У меня есть следующий запрос нескольких операторов:

app.get('/information', urlencodedParser, function (req, res) {
        var mysql = require('./resources/mysqlConnection');

        var qry = "SELECT e.emp_id, company_id, age, country FROM employee as e INNER JOIN company as c ON e.emp_id = c.emp_id WHERE e.emp_id = ?;SELECT * from players as p INNER JOIN teams as t ON p.team_id = t.team_id WHERE country = ?";

        mysql.query(qry, ["E00909", "Japan"], function(err, rows) {
            if (err) throw err;
            console.log(rows);
            var emp_data = rows[0];
            var team_data = rows[1];
            res.render('info.ejs', {data : emp_data});
        });

});

Однако, когда я запускаю сервер, я получаю следующееошибка:

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * from players as p INNE'

Я прочитал другие посты, касающиеся нескольких запросов к операторам, но решением всех этих случаев было включение нескольких запросов к операторам, установив для множественных состояний значение true. Я уже сделал это, поэтому я не уверен, почему я получаю эту ошибку. Я думаю, что массив ["E00909", "Japan"] в коде является источником этой проблемы, но я не уверен, как ее решить. Дальнейшее написание массива как ['E00909', 'Japan'] не решило проблему. Любые идеи приветствуются.

1 Ответ

1 голос
/ 16 октября 2019

Я бы попробовал установить параметры в вашем объекте config.databaseOptions, например,

const config = {
    databaseOptions: {
        host: "some_host",
        user: "some_user",
        password: "some_pw",
        database: "some_db",
        multipleStatements: true
    }
}

Или просто попробуйте:

config.databaseOptions.multipleStatements = true;

перед созданием пула.

Это устраняет ошибку для меня!

Если я опущу эту строку, я получу ту же ошибку, что и вы:

ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT..
...