Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql节点拒绝声音查询以复制数据库_Mysql_Node.js_Amazon Web Services_Sequelize.js - Fatal编程技术网

Mysql节点拒绝声音查询以复制数据库

Mysql节点拒绝声音查询以复制数据库,mysql,node.js,amazon-web-services,sequelize.js,Mysql,Node.js,Amazon Web Services,Sequelize.js,下面是一个合理的查询克隆一个数据库,如果在命令行中执行,它每次都能正常工作 Executing (default): mysqldump --column-statistics=0 -h ***.amazonaws.com -u *** -p*** MyDB1 --set

下面是一个合理的查询
克隆一个数据库
,如果在命令行中执行,它每次都能正常工作

Executing (default): mysqldump 
                      --column-statistics=0 
                      -h ***.amazonaws.com 
                      -u ***
                      -p*** MyDB1 
                      --set-gtid-purged=OFF 
                          | 
                      mysql -h ***.amazonaws.com 
                      -u ***
                      -p*** MyDB2
NodeJS

  let DBname = req.body.DBname;
  var sql = `mysqldump --column-statistics=0 -h ${config.global.host} -u ${config.global.user} -p${config.global.password} ${config.global.root_db_name} --set-gtid-purged=OFF | mysql -h ${config.global.host} -u ${config.global.user} -p${config.global.password}  ${DBname}  `
  db.sequelize.query(sql)
   .then( ()=> {
      console.log(`${config.global.root_db_name} copied to-> ${DBname}`)
      res.send('success')
   }).catch( err=> {
      console.log(`ERR: ${config.global.root_db_name} *FAILED* copied to-> ${DBname} ==> `+"\n\n" + err +"\n")
      res.send('fail')
   })
但是,当我将其嵌入我的NodeJS程序时,它会抛出错误:

SequelizeDatabaseError:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解正确的语法


以前有人处理过这个问题吗?欢迎提供所有建议,谢谢。

这个解决方案是Andrew在上面的一段话中提出的。我没有执行SQL命令

这就是有效的方法

const shell = require('shelljs')

...

  var dump = `mysqldump --column-statistics=0 -h ${config.global.host} -u ${config.global.user} -p${config.global.password} ${config.global.root_db_name} --set-gtid-purged=OFF | mysql -h ${config.global.host} -u ${config.global.user} -p${config.global.password}  ${DBname}  `

   if (shell.exec(dump).code !== 0) {
      console.log(`ERR: ${config.global.root_db_name} *FAILED* copied to-> ${DBname} `)
      res.send('fail')
    } else {
      console.log(`${config.global.root_db_name} copied to-> ${DBname}`)
      res.send('success')
    }

您能发布相关的Node.js代码片段吗?代码现在已发布请查看sequelize文档:。然后查看“mysqldump”命令行实用程序文档:。看起来您正在尝试使用一种只能执行SQL查询的方法。“mysqldump”不是一个查询,它是一个客户端实用程序,因此在本例中,您尝试执行的操作将不起作用。你可以试着用它来执行CLI命令:在你的实例上,但是idk你在什么样的环境中运行它。你完全正确-我真傻。谢谢你,我在下面发布了解决方案,它很有效。