Sequelize 远程数据库访问

5

我有一个数据库,之前我一直在远程访问它(使用 php),现在我正在尝试设置 Sequelize 连接到同一个远程服务器上的数据库:

为此,我有以下 json 文件(database.json):

{
  "dev": {
    "server": "serverip",
    "driver": "mysql",
    "user": "username",
    "port": "3306",
    "database": "databasename",
    "password": "password"
  }
}

现在我从server.js连接到数据库的方式是:

    var env = app.get('env') == 'development' ? 'dev' : app.get('env');
var port = process.env.PORT || 8080;

var Sequelize = require('sequelize');

// db config
var env = "dev";
var config = require('./database.json')[env];
var password = config.password ? config.password : null;

// initialize database connection
var sequelize = new Sequelize(
    config.server,
    config.database,
    config.user,
    config.port,
    config.password,
    {
        logging: console.log,
        define: {
            timestamps: false
        }
    }
);

这件事情令人“难过”的是,它不会抛出任何错误,但我知道它没有连接,因为它没有从数据库中收集任何数据。那么我做错了什么?
1个回答

7

请查看创建新sequelize实例的API文档:http://docs.sequelizejs.com/en/latest/api/sequelize/

只有数据库、用户名和密码应该作为参数传递,其余内容在选项对象中。

var sequelize = new Sequelize(
    config.database,
    config.user,
    config.password,
    {
        port: config.port,
        host: config.server,
        logging: console.log,
        define: {
            timestamps: false
        }    
    }
);

1
嗨,@Jan,我已经传递了你建议的变量,但仍然无法连接。 - Marc Rasmussen
没有错误信息,我只得到了“有些事情正在发生”的提示。 - Marc Rasmussen
是的,我注意到了,但是在连接或尝试访问任何模型时它并没有给我任何错误提示,这有点奇怪。 - Marc Rasmussen
好的,Sequelize在查询之前实际上会连接到数据库 - 如果您在模型中调用find,则查询成功或抛出错误:)。另外,我们又开始进行了一次长时间的评论讨论 - 请尝试加入freenode上的#sequelizejs IRC频道,并在那里提出您的问题。 - Jan Aagaard Meier
1
我发现了一个有点奇怪的错误信息:ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'109.56.7.58' (using password: YES) 问题是IP地址不是我插入到服务器变量中的那个? - Marc Rasmussen
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接