2013-07-03 222 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); 

     }); 
    }; 
};