Mysql NodeJS отклонить звуковой запрос к дублирующимся базам данных - PullRequest
0 голосов
/ 05 февраля 2020

Ниже приведен звуковой запрос к CLONE a Database, который при выполнении в командной строке работает идеально каждый раз.

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 версии сервера

Кто-нибудь имел дело с этим раньше - все советы приветствуются, спасибо.

1 Ответ

1 голос
/ 05 февраля 2020

Это решение появилось в результате замечаний Эндрю А. выше. Я не выполнял команду 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')
    }
...