【问题标题】:Import sql file using express js使用express js导入sql文件
【发布时间】:2019-03-29 16:31:21
【问题描述】:

我正在尝试在 express js 中导入 sql 文件。我尝试以下代码,但它不起作用 在使用 mssql 和 fs 模块时

fs.readFile(__dirname +'/database.sql', function (err, sqlFile) {
        if(err) { throw err; }
        connection.query(sqlFile, function(err, results) {
            if (err) throw err;
            console.log(results); 
          }); 
        console.log(sqlFile);
});

它不工作它说 ER_EMPTY_QUERY: 查询是空的

当我尝试 execsql 模块时。

var execsql = require('execsql'),
dbConfig = {
    host: 'localhost',
    user: 'root',
    password: 'root'
},
sql = 'use db_cam;',
sqlFile = __dirname + '/db.sql';

execsql.config(dbConfig) .exec(sql) .execFile(sqlFile,函数(错误,结果){ 控制台.log(结果); }).end();

它返回 ER_ACCESS_DENIED_ERROR

【问题讨论】:

    标签: javascript mysql node.js file express


    【解决方案1】:

    使用 ES6 试试下面的代码:

        import mysql from 'mysql';
        import * as path from 'path';
        import fs from 'fs';
    
        class DBManager {
          constructor() {
            this.conn = mysql.createConnection({
              host: process.env.DB_HOST,
              user: process.env.DB_USER,
              password: process.env.DB_PASSWORD,
              port: process.env.DB_PORT
            });
            let connection=this.conn;
            this.setCurrentDB(function (data) {
              if (data == 'refused') {
                let queries = fs.readFileSync(path.join(__dirname, 'db_file.sql'), { encoding: "UTF-8" }).split(";\n");
                for (let query of queries) {
                  query = query.trim();
                  if (query.length !== 0 && !query.match(/\/\*/)) {
                    connection.query(query, function (err, sets, fields) {
                      if (err) {
                        console.log(`Importing failed for Mysql Database  - Query:${query}`);
                      } else {
                        console.log(`Importing Mysql Database  - Query:${query}`);
                      }
                    });
                  }
                }
              } else if (data == 'connected') {
                console.log(`Connected to Mysql Database  `);
              }
            });
            this.conn.connect(function (err) {
              if (err) {
                console.log(`Mysql Database connection error`);
              } else {
                console.log(`Connected to Mysql Database`);
              }
            });
          }
    
      setCurrentDB(callback) {
        this.conn.query(`USE dbname`, function (err, rows) {
          if (err) {
            if (err.errno == 1049) {
              console.log(`${err.sqlMessage} : Failed to connect MySql database`);
              return callback('refused');
            } else {
              console.log(`Mysql Database connection error`);
              return callback('refused');
            }
          } else {
            return callback('connected');
          }
        });
      }
    
        }
        export default new DBManager();
    

    【讨论】:

      猜你喜欢
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2015-11-25
      相关资源
      最近更新 更多