SQL命令在MYSQL命令行中工作,但在NODE.JS应用程序中失败

ycggw6v2  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(82)

如果我以root用户身份输入,以下SQL可以正常工作:

sudo mysql -u root -p

DROP DATABASE IF EXISTS bugtracker; CREATE DATABASE bugtracker; USE bugtracker;

字符串
但是如果我运行node.js代码,我会得到错误:
错误:您的SQL语法中有错误;请检查与您的MariaDB服务器版本对应的手册,以在第1行的“CREATE DATABASE bugtracker; USE bugtracker”附近使用正确的语法
1064年,
SQL:'DROP DATABASE IF EXISTS bugtracker; CREATE DATABASE bugtracker; USE bugtracker',
sqlState:'42000',
sql消息:“您的SQL语法中有错误;请检查与您的MariaDB服务器版本对应的手册,以了解在第1行的”CREATE DATABASE bugtracker; USE bugtracker“附近使用的正确语法”
我有2个节点文件,如下所示。我已经从mysql中删除了appUser,并重新添加了他,之后授予特权和刷新特权。
节点文件:mysql_funcs:

import mysql from "mysql2/promise";

export function CreatePool()
{
    return new Promise(function(resolve, reject)
    {
        try
        {
            let pool = mysql.createPool({
                host: '127.0.0.1',
                user:'appUser',
                password: 'Password123'
            });
            resolve(pool);
        }
        catch(err)
        {
            reject(err);
        }
    });
}

export function GetDBSQL(sql, pool)
{
    return new Promise(function(resolve, reject)
    {
        try
        {
            let ret = pool.query(sql)
            resolve(ret);
        }
        catch(err)
        {
            reject(err);
        }
    });
}


main.js:

import * as mysqlf from "../common/db/mysql_funcs.js"

mysqlf.CreatePool().then(
    (pool) =>
        {
                const sqll="DROP DATABASE IF EXISTS bugtracker; CREATE DATABASE bugtracker; USE bugtracker;";

                mysqlf.GetDBSQL(sqll, pool).then(
                    (ans) =>
                    {
                        console.log("DONE OK");
                    },
                    (err) =>
                    {
                        console.log(err);
                    }
                )
            });

r7knjye2

r7knjye21#

在您的情况下,可能更可取的迁移方法,例如使用knex js:
Create database in Knex migration

相关问题