2013-07-03 155 views
1

我试图使用node.js创建mysql数据库和表。Nodejs 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工作台就好了?我错过了什么吗?

旁注:

IM使用节点的MySQL(https://github.com/felixge/node-mysql)对我的MySQL操作。

根据那里的文档,它可能会串联查询,但在那里的文档中的示例只会谈论选择查询。

+0

尝试单独执行查询...因为可能nodejs不支持多个查询 – Stephan

回答

5

我讨厌自己的问题,但我找到了解决方案。

我想念红色的文件。它可以通过在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.'); 
}); 
0

对于创建与MySQL node.js中的第一个连接安装在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" 
    } 
} 

for establish连接在.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); 

     }); 
    }; 
};