如何使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
东西。 在这种情况下, 1234是your_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服务器安装。