[英]When calling a stored procedure it cannot find the database in Node and mysql
我正在尝试在 nodejs 中调用存储过程,并且我的数据库是在 mysql 中创建的,目前我需要将表复制到新数据库中,当尝试测试我的方法时它会向我抛出消息ER_NO_DB_ERROR: No database selected 。 我称之为这个存储过程的方法如下。
var mysql = require('mysql'); var uuid = require('uuid'); let config = require('../config/db.config'); let connection = mysql.createConnection(config); let sql = `CALL ReplyDB(?)`; app.post('/', function (req, res) { connection.query(sql,true, (error, results, fields) => { if (error) { return console.error("Fallo la replicación", error.message); } console.log("El id único es: ", uuid.v4()); console.log(" Replicación completada", results[0]); }); connection.end(); });
它生成的存储过程如下。
DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `demo`.`ReplyDB`(IN done BOOLEAN) /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'*/ BEGIN INSERT INTO testdb.backup_sales_order SELECT * FROM demo.sales_order; END $$ DELIMITER;
我没有收到任何参数,我只需要当我自己在主路径中position时,执行方法并插入数据。
db.config
还必须有一个数据库
喜欢:
var databaseOptions = {
host : 'localhost',
database : 'demo',
user : 'root',
password : 'secretpassword',
port : '3306'
};
或致电use demo
喜欢:
let database = 'demo';
connection.query(`USE ${database}`, (error, results, fields) => {
...
});
每次调用 mysql function 都必须有一个作为数据库的钩子
所以 spencer7593 当然是对的
let sql = 'CALL demo.ReplyDB(?)';
也可以解决问题,但我认为您想在演示上运行更多查询,因此在连接字符串中使用 USE 或使用演示会更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.