繁体   English   中英

调用存储过程时,在 Node 和 mysql 中找不到数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM