我有一个 .sql 文件用来创建数据库,我手动在 mysql 命令行里执行 source sql文件
OK,但是在 Node.js 里就报错。Node.js 里连接 mysql 正常,其他查询也可以执行,但是这个 source 不行,我折腾不出来头绪。
database.sql
create database if not exists `note` default character set utf8mb4;
use `note`;
create table `users`(`id` int not null AUTO_INCREMENT, primary key(`id`), `uname` varchar(30) not null, `pwd` varchar(100) not null, `email` varchar(100) not null, `avatar` varchar(100) not null default "", `verify` char(6)) default charset = utf8mb4;
create table `notes`(`id` int not null AUTO_INCREMENT, primary key(`id`), `userid` int not null, `content` text not null, `tag` varchar(200), `time` varchar(14) not null) default charset = utf8mb4;
createDB.js
const path = require('path')
const MysqlPro = require('mysql-pro')
// const DBConfig = require('./DBConfig')
const DB = new MysqlPro({
mysql: {
host: 'localhost',
port: 3306,
database: 'mysql',
user: 'root',
password: 'root'
}
})
const fileName = path.resolve(__dirname, 'database.sql')
DB.query(`source ${fileName}`)
.then((res) => {
console.log(res)
})
.catch((error) => {
console.log(error)
})
当我用 node createDB.js
执行时,报错语法错误:
code: 'ER_PARSE_ERROR',
errno: 1064,
sqlMessage: 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'source D:\\document\\vue\\note\\koa2\\database.sql\' at line 1',
sqlState: '42000',
index: 0,
sql: 'source D:\\document\\vue\\note\\koa2\\database.sql'
我不知道怎么错了,而且最后这个 sql 语句 source D:\\document\\vue\\note\\koa2\\database.sql
我手动复制到 mysql 里可以正常执行, Node.js 里执行就报错了,求解 Orz
参考这个issue
这里说的很清楚,source是MySQL的命令。不属于SQL规范。所以不能用。