Nodejs mysql查询没有执行

时间:2013-07-03 13:25:25

标签: mysql node.js

我试图使用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操作。

根据那里的文档,有可能联合查询,但文档中的示例只讨论选择查询。

2 个答案:

答案 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);

        });
    };
};