提前感谢您的帮助!
我正在创建一个node / express应用程序,我想使用一个mysql数据库。但我似乎无法连接到数据库。
我知道我应该使用node-mysql模块(https://github.com/felixge/node-mysql),但我一定做错了。
我对此完全陌生。我是否必须创建数据库然后创建表?有没有办法在别处创建数据库,以便每次重新启动应用程序时都不会删除它?
这是我的代码。有人可以回答上面的问题并告诉我下面我做错了什么吗?谢谢!
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'
答案 0 :(得分:3)
您可以像往常一样在数据库中创建表格,并且在您重新启动应用程序时,它将足够持久,不会被删除。如果需要,可以使用以下代码连接到数据库:
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...
});
答案 1 :(得分:1)
我的第一个建议是,除了有关任何错误的问题之外,你应该尝试这个
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。
要在Linux或Mac OS上的your_MySQL_port
中插入 MySQL端口,只需打开一个类型的终端:
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
});
答案 2 :(得分:1)
在使用Node进入MySQL之前,你可能想要阅读一些关于MySQL的教程,但是如果你觉得有冒险精神,这里有一个关于如何在我的机器上设置MySQL的非常简短的教程。
我假设你有权访问MySQL shell。如果您正在使用前端,则该过程可能会有所不同。
安装MySQL并配置帐户后,您需要使用命令
登录MySQL shellmysql -u me -p
在提示时显示MySQL用户的密码。
接下来,您将要创建一个数据库。你可以用命令
来做到这一点create database mydatabase;
然后
use mydatabase;
接下来,您将要创建一个表格。在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
});
答案 3 :(得分:0)
我面临同样的问题所以我如何解决它......
1-I have already installed wamp and can access to phpmyadmin. 2-Using phpmyadmin i have created a database and a table say it users(please insert 2,3 rows data using insert menu option) look like check > http://prntscr.com/72gsxc 3-Make sure wamp is running and mysql service is also running. 4-Click wamp and mouseover MYSQL and then click my.ini and search there port by default it is 3306.
var pool = mysql.createPool({ host : 'localhost', user : 'root', password : '', database : 'cricstream_2', port : 3306 }); var readTable = 'SELECT * FROM countries'; pool.getConnection(function(error, connection){ connection.query(readTable, function(err, rows){ if(err) throw err; else { console.log(rows); } }); });
答案 4 :(得分:0)
我是否必须创建数据库然后创建表?
是的,你应该提前创建数据库和表,这是正确的。
有没有办法在别处创建数据库,以便每次重新启动应用程序时都不会删除它?
是的,您通常在计算机上安装MySQL服务器,此安装管理一系列数据库,您可以删除/备份/复制等,并创建新数据库。您的NodeJS应用程序只是连接到您的MySQL服务器安装。