2013-07-05 159 views
1

嘗試連接到本地主機數據庫時遇到了很多麻煩。我試過使用mysqlmysql-simple節點模塊,但在這兩種情況下我都無法連接。無法從node.js服務器連接到本地數據庫

這就是我與 'MySQL的' 模塊用於:

var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    port  : '8000', 
    user  : 'uber', 
    password : 'pass', 
}); 

connection.connect(function(err) { 
     if (err) throw err; 

     console.log('Connection Successful'); 
}); 


connection.query('USE someDB', function(err) { 
    if (err) throw err; 

    console.log('Query Successful'); 
}); 

在這裏,」我用用 '的mysql-簡單的' 模塊:

var database = require('mysql-simple'); 
database.init('uber', 'pass', 'mysql', 'localhost', 8000); 

database.querySingle('SELECT Host FROM user', function(err, results) { 
    if (err) { 
     console.log('error fetching some active users: ' + err); 
     return; 
    } 
    log('Query Successful'); 
    for (var i = 0; i < results.length; i++) 
     console.log('got active user ' + results[i]); 
} 

在這兩種情況下,當我運行我的node.js服務器,它從不記錄它的連接。我嘗試用127.0.01替換localhost並創建一個新用戶以確保密碼正確,但無濟於事。爲什麼不連接?

感謝

+1

您可以從命令行執行此操作:'MySQL的-ppass -u尤伯杯-h本地主機someDB'? –

+0

檢查下面的線程來解決你的問題https:// stackoverflow。com/questions/45947577 /無法連接到mysql-database-on-node-js – Krishnamoorthy

回答

1

改變這種

database.init('uber', 'pass', 'mysql', 'localhost', 8000); 

database.init('uber', 'pass', 'mysql', 'localhost', 3306); 

,你應該通過

+0

它現在給我這個錯誤:'錯誤:連接ECONNREFUSED' 另外爲什麼端口3306? – Nikolai

+0

默認情況下,mysql在3306端口上運行,請檢查UNAME/PASSWORD並查看是否已啓動 – Satya

+0

檢查UNAME&PASSWORD並且它們是正確的,仍然給我同樣的錯誤 - 讓新用戶確定 – Nikolai

0

試試這個代碼,它的工作對我來說

var mysql = require('mysql'); 

var connection = mysql.createConnection(
    { 
     host  : 'localhost', 
     user  : 'root', 
     password : '', 
     database : 'urdatabase', 
    } 
); 

connection.connect(); 


query = connection.query("SELECT * FROM UrTable;"); 
    query 
    .on('error', function(err) { 
     console.log(err); 

    }) 
    .on('result', function(data) { 
     socket.emit('YourData',data); 
    }); 

我希望這將有助於你

+0

仍然沒有運氣我'只怕:( 當我運行它,我只是得到 {[錯誤:連接ECONNREFUSED] 代碼: 'ECONNREFUSED', 錯誤號: 'ECONNREFUSED', 系統調用: '連接', 致命的:真正} – Nikolai

+0

你運行你的MySQL服務器(Wamp或Xampp ...)如果是,請在** mysql.conf中註釋** skip-networking **。 – Fox

+0

這篇文章可以幫助你: https://github.com/felixge/node-mysql/issues/144 – Fox

2

這是最有可能的網絡被關閉,這意味着MySQL服務器通過Unix套接字,而不是通過TCP/IP客戶端進行通信。你可以檢查出運行mysql客戶端並運行「status」命令。如果您在那裏看到端口號,那麼您的mysql服務器通過TCP/IP進行通信,否則您將看到類似「socket pathname ...」的內容,獲取路徑名並將其提供給node.js連接參數。

... socketPathname: '/選擇/ LAMPP在/ var/......', ...

檢查出https://github.com/felixge/node-mysql頁面(搜索 「socketPathname」)

希望,那是你的問題。

+0

我使用'socketPath:'my/path/to/socket'來達到很好的效果克拉。謝謝你。 –

0

確保MySQL和express運行在同一個端口上。 我有從XAMPP捆綁的MySQL,在端口3036上運行。 將app.listen設置爲3036,我的代碼工作。最後!

0

您應該使用mysql_config來顯示套接字的路徑。
這一個樣品在我的MAC

QuyLes-MacBook-Pro:freelancer quyle$ mysql_config 
Usage: /Applications/MAMP/Library/bin/mysql_config [OPTIONS] 
Options: 
     --cflags   [-I/Applications/MAMP/Library/include -fno-omit-frame-pointer -g -DNDEBUG] 
     --include  [-I/Applications/MAMP/Library/include] 
     --libs   [-L/Applications/MAMP/Library/lib -lmysqlclient -lz] 
     --libs_r   [-L/Applications/MAMP/Library/lib -lmysqlclient_r -lz] 
     --plugindir  [/Applications/MAMP/Library/lib/plugin] 
     --socket   [/Applications/MAMP/tmp/mysql/mysql.sock] 
     --port   [0] 
     --version  [5.5.42] 
     --libmysqld-libs [-L/Applications/MAMP/Library/lib -lmysqld] 
     --variable=VAR VAR is one of: 
       pkgincludedir [/Applications/MAMP/Library/include] 
       pkglibdir  [/Applications/MAMP/Library/lib] 
       plugindir  [/Applications/MAMP/Library/lib/plugin] 

,然後,你yourMysqlConnection添加關鍵socketPath。
波紋管我的樣品

MysqlServer: { 
    adapter: 'sails-mysql', 
    host: 'localhost', 
    user: 'root', //optional 
    password: 'root', //optional 
    database: 'nodejs', //optional, 
    socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'  
}, 
相關問題