포트 포워딩을 사용하여 라이브 데이터베이스에 로컬로 연결하는 데 문제가 없지만 오픈 시프트 장비에서 연결하려고하면 오류가 발생합니다. 나 코드로 시작 해보자 : 여기Nodejs 변경 데이터베이스 응용 프로그램의 라이브 데이터베이스에 연결할 수 없습니다.
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();
});
}
우리가받을 약간의 오류가 있습니다 :
여기다음은 쿼리의 예입니다
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
});
변수 연결입니다.
먼저 크롬의 콘솔에서 오류가 :
GET에 http : // ** .rhcloud.com/answerDB 503 (서비스를 일시적으로 사용할 수)
하지만 가끔은 우리가 프록시 오류 :
GET에 http : // ** .rhcloud.com/exploreDB 502 (프록시 오류) 또한
, 내가 실행 된 명령 RHC 꼬리 -an odejs 여기에 내가받은 오류입니다
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'로 변경했습니다. 그런 다음 undefined의 메서드 릴리스를 호출 할 수 없다고 말했습니다. 그래서 우리는 'connection.release()'를 'connectionpool.release()'로 변경했으며 객체 #에는 메서드가 릴리스되어 있지 않다고했습니다. 그래서 저는 그 실수의 한 부분을 소금 한알로 가져 가고 있습니다.
왜 연결되지 않을지 알 수 없습니다. 모든 정보를 크게 주시면 감사하겠습니다 - 고마워요.
와우, 고마워. 나는 그 명령을 실행했고 그것은 완전히 효과가 있었다! :) https://www.youtube.com/watch?v=0hiUuL5uTKc – user2796352
nice! https://gist.github.com/ryanj/9065881 –