Mysql 错误:ER_NO_DB_错误:在Node.js中没有选择数据库?
我想从node.js服务器创建sql表。但是,我遇到了以下错误: (节点:13560)未处理的PromisejectionWarning:错误:ER_NO_DB_错误:未选择任何数据库 我试图补充:使用斯坦联合交易所强> 其中,stan_sehk是模式的名称。然而,我得到了另一个错误: (节点:12468)未处理的PromisejectionWarning:错误:ER_PARSE_错误:您的SQL语法有错误 问题是select语句可以工作,但create语句会出错。对于“创建视图支柱”也是如此Mysql 错误:ER_NO_DB_错误:在Node.js中没有选择数据库?,mysql,sql,node.js,express,Mysql,Sql,Node.js,Express,我想从node.js服务器创建sql表。但是,我遇到了以下错误: (节点:13560)未处理的PromisejectionWarning:错误:ER_NO_DB_错误:未选择任何数据库 我试图补充:使用斯坦联合交易所 其中,stan_sehk是模式的名称。然而,我得到了另一个错误: (节点:12468)未处理的PromisejectionWarning:错误:ER_PARSE_错误:您的SQL语法有错误 问题是select语句可以工作,但create语句会出错。对于“创建视图支柱”也是如此 //
//MY db_config.json file
{
"mysql":{
"host": "localhost",
"port": 3306,
"acquireTimeout": 30000,
"user": "appuser",
"password" : "abc123",
"database": ""
},
"redis":{
"port" : 6379,
"host" : "127.0.0.1"
}
}
//我的mysql_access.js文件
const mysql = require('mysql');
const fs = require('fs');
const json = require('json');
const config_param = fs.readFileSync('./data_access/db_config.json', 'utf-8');
const config_param_json = JSON.parse(config_param);
const pool = mysql.createPool({
host: config_param_json.mysql.host,
port: config_param_json.mysql.port,
acquireTimeout: config_param_json.mysql.acquireTimeout,
user: config_param_json.mysql.user,
password: config_param_json.mysql.password,
dateStrings: true
});
let query = function( sql, values) {
return new Promise(( resolve, reject ) => {
pool.getConnection(function(err, connection) {
if (err) {
reject( err )
} else {
connection.query(sql, values, ( err, rows) => {
if ( err ) {
reject( err )
} else {
resolve(JSON.parse(JSON.stringify(rows)))
}
connection.release()
})
}
})
})
};
module.exports = {query};
查询错误1:
let sql = `create table if not exists todos(
id int primary key auto_increment,
title varchar(255)not null,
completed tinyint(1) not null default 0
)`;
let sql_call = {
sql: sql,
sql_value: null
};
let sql_result = await mysql_access.query(sql_call.sql, sql_call.sql_value);
console.log(sql_result[11]);
错误消息:
(node:10640) UnhandledPromiseRejectionWarning: Error: ER_NO_DB_ERROR: No database selected
(node:12468) UnhandledPromiseRejectionWarning: 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 'create table if not exists todos(id int primary key a' at line 1
查询错误2:
let sql = `use stan_sehk; create table if not exists todos(
id int primary key auto_increment,
title varchar(255)not null,
completed tinyint(1) not null default 0
)`;
let sql_call = {
sql: sql,
sql_value: null
};
let sql_result = await mysql_access.query(sql_call.sql, sql_call.sql_value);
console.log(sql_result[11]);
错误消息:
(node:10640) UnhandledPromiseRejectionWarning: Error: ER_NO_DB_ERROR: No database selected
(node:12468) UnhandledPromiseRejectionWarning: 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 'create table if not exists todos(id int primary key a' at line 1
如果有什么事情我做得不对,请帮助我。正如我所说,SELECT查询可以工作,但CREATE查询会给出上述错误。非常感谢。当您知道在给出正确的架构名称后可以选择数据,但CREATE语句有问题时,我觉得用户“appuser”存在权限相关问题。@mkRabbani感谢您的回复。我还认为这就是问题所在,但即使将用户更改为root用户也无法解决问题。在mysql workbench中,所有的查询都可以工作,甚至对于用户“appuser”。仍然无法理解出现该错误的原因。因为您知道在给出正确的架构名称后可以选择数据,但CREATE语句有问题,我觉得用户“appuser”存在权限相关问题。@mkRabbani感谢您的回复。我还认为这就是问题所在,但即使将用户更改为root用户也无法解决问题。在mysql workbench中,所有的查询都可以工作,甚至对于用户“appuser”。我仍然不明白为什么会发生这样的错误。