我试图使用node.js来创建一个mysql数据库和表。
我想要执行的查询是:
CREATE DATABASE NodeTest;USE NodeTest;CREATE TABLE tblUsers (userId varchar(32), userName varchar(255), friendlyUserName varchar(255));
所以我一次执行更多查询。在MySqlWorkbench中,这工作正常。
在我的nodejs项目中,它说我的sql语句中存在语法错误。
我的节点代码:
mysqlConnection.query( 'CREATE DATABASE NodeTest;USE NodeTest;CREATE TABLE tblUsers (userId varchar(32), userName varchar(255), friendlyUserName varchar(255));' , function( oError ){
if ( oError ) throw oError;
console.log( 'Database created.' );
});
为什么我不能在节点js中以这种方式使用我的查询但是语法在MySql工作台中正常工作?我错过了什么吗?
旁注:
我正在使用node-mysql(https://github.com/felixge/node-mysql)进行我的mysql操作。
根据那里的文档,有可能联合查询,但文档中的示例只讨论选择查询。
答案 0 :(得分:6)
我讨厌回答我自己的问题,但我找到了解决方案。
我想念红色文档。可以通过在createConnection()函数中设置选项{multipleStatements:true}来实现。
所以它就像:
mysqlConnection = mysql.createConnection({
host: settings.mysqlServer,
user: settings.mysqlUser,
password: settings.mysqlPassword,
multipleStatements: true
});
mysqlConnection.query( 'CREATE DATABASE NodeTest;USE NodeTest;CREATE TABLE tblUsers (userId varchar(32), userName varchar(255), friendlyUserName varchar(255));' , function( oError ){
if ( oError ) throw oError;
console.log( 'Database created.' );
});
答案 1 :(得分:0)
用于创建node.js与MySQL的连接 首先使用
在node.js中安装mysql连接器$ npm install mysql
然后 您应该在datasources.json文件中添加代码
{
"db": {
"name": "db",
"connector": "memory"
},
"sql": {
"host": "localhost",
"port": "3306",
"database": "database name",
"username": "root",
"password": "",
"name": "sql",
"connector": "mysql"
}
}
用于在.js文件中建立连接添加代码
module.exports = function(Module_Name) {
Module_Name.remoteMethod( 'table_name',
{ accepts: [],
returns: [
{arg: 'data', type: 'string',}
],
});
Module_Name.table_name= function (cb) {
var ds = Module_Name.dataSource;
ds.connector.query(sql, function (err) {
if (err) console.error(err);
});
};
};