2

我正在尝试使用 node.js 创建 MySql 数据库和表。

我要执行的查询是:

CREATE DATABASE NodeTest;USE NodeTest;CREATE TABLE tblUsers (userId varchar(32), userName varchar(255), friendlyUserName varchar(255));

所以我将查询连接在一起。在 MySqlWorkbench 这工作得很好。

在我的 NodeJS 项目中,它说syntax error我的 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.' );
    });

我正在使用 node-mysql ( https://github.com/felixge/node-mysql ) 进行我的 mysql 操作。

根据文档,可以连接查询。

为什么这不起作用?

4

2 回答 2

9

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

我想念红色的文档。通过在 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.' );
    });
于 2013-07-03T13:53:02.460 回答
-1

要创建 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);

        });
    };
};
于 2017-05-22T06:32:43.630 回答