2013-07-05 125 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'  
}, 
相关问题