gpt4 book ai didi

mysql - 无法连接到 Nodejs Openshift 应用程序中的实时数据库

转载 作者:行者123 更新时间:2023-11-30 00:16:13 25 4
gpt4 key购买 nike

我使用端口转发在本地连接到实时数据库没有遇到任何问题,但是当我们从 openshift gear 进行连接时,我们会收到错误。让我从代码开始:

这是连接变量

var connectionpool = mysql.createPool({
host : process.env.OPENSHIFT_MYSQL_DB_HOST,
port : process.env.OPENSHIFT_MYSQL_DB_PORT,
user : process.env.OPENSHIFT_MYSQL_DB_USERNAME,
password : process.env.OPENSHIFT_MYSQL_DB_PASSWORD,
database : 'stembuds',
socket : process.env.OPENSHIFT_MYSQL_DB_SOCKET
});

这是一个查询示例:

app.get('/answerDB/:course?/:answerID?', function(req, res){
var course = req.param('course');
var answerID = req.param('answerID');
connectionpool.getConnection(function(err, connection){
if(err){
console.error('CONNECTION error: ',err);
res.statusCode = 503;
res.send({
result: 'error',
err: err.code
});
}
if (course === undefined && answerID === undefined) {
connection.query('SELECT * FROM questions WHERE counter = 0', function(err, rows, fields){
if (err) {
console.error(err);
res.statusCode = 500;
res.send({
result: 'error',
err: err.code
});
}
for(var i in rows){
var newCourse = rows[i].course;
newCourse = courses[newCourse];
rows[i].course = newCourse;
}
res.send(rows);
connection.release();
});
}

以下是我们收到的一些错误。

首先是 Chrome 控制台中的错误:

GET http://**.rhcloud.com/answerDB 503(服务暂时不可用)

但有时我们会遇到代理错误:

GET http://**.rhcloud.com/exploreDB 502(代理错误)

此外,我一直在运行命令 rhc tail -a nodejs,这是我收到的错误

 CONNECTION error:  { [Error: ER_ACCESS_DENIED_ERROR: Access denied for user          'adminMYXaSuf'@'127.11.28.130' (using password: YES)]
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000',
fatal: true }
TypeError: Cannot call method 'query' of undefined
at /var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/routes/site.js:172:15
at Pool.<anonymous> (/var/lib/openshift/5303aee55973ca4092000084/app- root/runtime/repo/node_modules/mysql/lib/Pool.js:49:16)
at Handshake.Sequence.end (/var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/node_modules/mysql/lib/protocol/sequences/Sequence.js:78:24)
at Handshake.ErrorPacket (/var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/node_modules/mysql/lib/protocol/sequences/Handshake.js:93:8)
at Protocol._parsePacket (/var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/node_modules/mysql/lib/protocol/Protocol.js:202:24)
at Parser.write (/var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/node_modules/mysql/lib/protocol/Parser.js:62:12)
at Protocol.write (/var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/node_modules/mysql/lib/protocol/Protocol.js:37:16)
at Socket.<anonymous> (/var/lib/openshift/5303aee55973ca4092000084/app-root/runtime/repo/node_modules/mysql/lib/Connection.js:72:28)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:720:14)

现在说无法调用未定义的方法查询。我们认为这很奇怪,所以我们将“connection.query”更改为“connectionpool.query”,然后它告诉我们它不能调用未定义的方法release。因此,我们将“connection.release()”更改为“connectionpool.release()”,它告诉我们该对象没有释放方法。所以我对这部分错误持保留态度。

我们不知道为什么它无法连接。任何信息将不胜感激 - 谢谢。

最佳答案

如果您的应用程序代码在连接到远程 OpenShift 托管的数据库(使用 rhc port-forward)时在本地运行,那么我怀疑您的应用程序可能具有一些未记录的依赖项。

可能是您在开发环境中本地(或全局)安装了某些内容,而没有将该 dep 包含在应用的 package.json 文件中。

在将应用推送到 OpenShift 之前,请确保应用在全新环境中运行所需的所有内容都包含在应用的 package.json 文件中。

npm install my_dependency --save

我写了一些额外的注释,这些注释对于通过端口转发连接到 OpenShift 托管的数据库进行本地测试可能有用:https://www.openshift.com/blogs/set-up-local-access-to-openshift-hosted-services-with-port-forwarding

关于mysql - 无法连接到 Nodejs Openshift 应用程序中的实时数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com