如何使node.js和mysql一起工作?

在此先感谢您的帮助!

我正在做一个节点/快递的应用程序,我想用一个MySQL数据库。 但我似乎无法连接到数据库。

我知道我应该使用node-mysql模块( https://github.com/felixge/node-mysql ),但我一定是做错了。

我对此完全陌生。 我必须创build一个数据库,然后创build一个表? 有没有办法在其他地方创build一个数据库,所以每次重新启动应用程序都不会被擦除?

这是我的代码。 有人可以回答上面的问题,并告诉我我下面做错了什么? 谢谢!

var express = require('express'), routes = require('./routes'), user = require('./routes/user'), http = require('http'), io = require('socket.io'), path = require('path'); var app = express(); var server = http.createServer(app); sio = io.listen(server); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(require('stylus').middleware(__dirname + '/public')); app.use(express.static(path.join(__dirname, 'public'))); }); app.configure('development', function(){ app.use(express.errorHandler()); }); server.listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); var mysql = require('mysql'); var connection = mysql.createConnection({ user : 'me', password : 'secret', host : 'localhost', port : app.get('port') }); connection.connect(); connection.query('CREATE TABLE tesTable (integer int, textfield VARCHAR(100), PRIMARY KEY(integer))', function(err, result){ if(err) { console.log(err); } else { console.log("Table testTable Created"); } }); 

顺便说一句,在package.json中,我列出了

 "mysql": "2.0.0-rc2" 

作为依赖,并做到了

 'npm install' 

您可以像往常一样在数据库中创build表格,并且在您重新启动应用程序的任何时候,该表格都将永久保持不被删除。 如果需要,可以使用以下代码连接到数据库:

  var mysql = require('mysql'); app.use( connection(mysql, { host: 'myhost', user: 'user_name', password: 'password', port: 3306, //port mysql database: 'database_name', multipleStatements: 'true' //false by default }, 'pool')); req.getConnection(function(err, connection) { connection.query("SELECT * FROM `table_name`;",function (error,row){ if(!error){ //do something..... } else console.log("Error : "+err); }); //do something else... }); 

我的第一个build议,除了关于任何错误的问题,你应该尝试这个

 var mysql = require('mysql'); var connection = mysql.createConnection({ user : 'me', password : 'secret', host : 'localhost', port : your_MySQL_port }); 

在给定的例子中, port: app.get('port')返回你的http服务器端口,但不是你的MySQL服务器的端口。

在'port'检查https://github.com/felixge/node-mysql#connection-options

为了让您的MySQL端口插入Linux或Mac OS上的your_MySQL_port ,只需打开一个terminaltypes:

 ps ax | grep mysqld 

结果你会在生成的输出中看到类似于--port=1234东西。 在这种情况下, 1234your_MySQL_port

在这个例子中,你的代码应该是这样的:

 var mysql = require('mysql'); var connection = mysql.createConnection({ user : 'me', password : 'secret', host : 'localhost', port : 1234 }); 

在使用Node跳转到MySQL之前,您可能需要阅读一些关于MySQL的教程,但是如果您觉得冒险的话,这里有一个关于如何在我的机器上设置MySQL的非常简短的教程。

我假设你有权访问MySQL shell。 如果你使用前端,这个过程可能会有所不同。

在安装MySQL并configuration一个帐户后,您需要使用该命令login到MySQL shell

 mysql -u me -p 

紧接着提示MySQL用户的密码。

接下来,您将需要创build一个数据库。 你可以用这个命令来做这个

 create database mydatabase; 

然后

 use mydatabase; 

接下来,您将要创build一个表。 在shell中运行CREATE TABLE查询来设置一个表。 你可以在Node中做到这一点,但是你每次启动应用程序都会毫无必要地运行这个命令。

现在你应该可以使用node-mysql连接了

 var connection = mysql.createConnection({ user : 'me', password : 'secret', host : 'localhost', database : 'mydatabase', port : 3306 // or whatever your mysql port is }); 

我面临同样的问题,所以我如何解决它…

Mysql部分

 1,我已经安装了wamp,可以访问phpmyadmin。
 2  - 使用phpmyadmin我创build了一个数据库和一个表说它的用户(请插入2,3行数据插入菜单选项)看起来像 
查 

 > http://prntscr.com/72gsxc

 3-确保wamp正在运行,并且mysql服务也在运行。 
 4,点击wamp和mouseover MYSQL,然后点击my.ini,默认search那里的端口是3306。

节点部分



     var pool = mysql.createPool({
        主机:'localhost',
        用户:“root”,
        密码:'',
        数据库:'cricstream_2',
        港口:3306
     });

     var readTable ='select*从国家';

         pool.getConnection(function(error,connection){ 
           connection.query(readTable,function(err,rows){
            如果(犯错)抛出犯错;
             else { 
                的console.log(行);
             }
           });
          });

我必须创build一个数据库,然后创build一个表?

是的,你应该提前创build数据库和表,这是正确的。

有没有办法在其他地方创build一个数据库,所以每次重新启动应用程序都不会被擦除?

是的,你通常在计算机上安装MySQL服务器,这个安装pipe理一个数据库的运行,你可以删除/备份/复制等,并创build新的数据库。 您的NodeJS应用程序将只是连接到您的MySQL服务器安装。