반응형
MySQL이 쿼리를 반환하지만 연결이 닫히지 않음
저는 MySQL/MariaDB 서버에 액세스하기 위해 이 js 코드를 실행하려고 합니다(현재는 두 가지 모두 시도했습니다).
const knex = require('../connection')
const mysql = require('mysql2');
function getDifficulty(){
/*
return knex.select('*').from('tb_dificuldades').limit(9)
.then((results) => {
console.log("GOT RESULTS!")
return results
})
*/
// create the connection to database
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: ''
})
const results = connection.query(
'SELECT * FROM tb_dificuldades;',
function(err, results, fields) {
console.log(results); // results contains rows returned by server
console.log(fields); // fields contains extra meta data about results, if available
return results
}
)
return results
}
getDifficulty()
<knex 파일>js>
require('dotenv').config()
const path = require('path')
module.exports = {
development: {
client: 'mysql2',
version: '5.7',
connection: {
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || '',
},
migrations: {
tableName: 'knex_migrations',
directory: `${path.resolve(__dirname, 'src', 'database', 'migrations')}`
},
seeds: {
directory: `${path.resolve(__dirname, 'src', 'database', 'seeds')}`
}
}
}
<connection.js>
require('dotenv').config()
const knexfile = require('../../knexfile')
const knex = require('knex')(knexfile[process.env.ENV || 'development'])
module.exports = knex
결과와 필드가 인쇄되지만 연결이 닫히지 않아 콜백 기능에서 코드 실행이 중지됩니다.
환경:
OS:Debian GNU/Linux 10 (buster)
D:Docker version 19.03.13
DC:docker-compose version 1.21.0
DB:MariaDB & MySQL (docker)
IP:localhost(docker-proxy); db(docker-dns)
CLIENT: mysql & mysql2 (nodejs); knexjs
나는 이미 mysql에서 mariadb로 바꾸려고 시도했습니다;
처음에는 mysql과 함께 knex를 사용하다가 mysql2를 사용하고 knex 없이 mysql2를 사용했습니다.
DBeaver throught localhost(도커 프록시)를 사용하고 있는데 동일한 쿼리가 정상적으로 작동합니다.
Knex 마이그레이션 및 시드도 작동하고 있습니다.
예상:
[...]
columnType: 3,
flags: 4097,
decimals: 0
}
]
[Done] exited with code=0 in 0.305 seconds
받은 항목:
[...]
columnType: 3,
flags: 4097,
decimals: 0
}
]
[Done] exited with code=null in 18.594 seconds
OBS: exited after aborting process, also this query shouldn't take 18s
and it isn't taking that long.
It does return what I expect, but the client holds the connection.
So, my program freezes after running the query. (Not happening in DBeaver)
EDIT1: knex.destroy()를 사용하면 프로그램이 잘 작동하지만, 예상되는 사용량입니까?
return knex.select('*').from('tb_dificuldades').limit(9)
.then((results) => {
console.log("GOT RESULTS!")
console.log(results)
knex.destroy()
return results
})
각 쿼리 후에 긴밀한 연결이 필요하지 않고 응용프로그램의 다른 부분에서 재사용하면 됩니다.연결을 닫아야 할 경우 수동으로 닫으십시오.
예를 들어 Knex를 사용하면 이러한 방식으로 작업을 수행할 수 있습니다.
knex.destroy();
언급URL : https://stackoverflow.com/questions/64260247/mysql-returns-query-but-the-connection-does-not-close
반응형
'programing' 카테고리의 다른 글
php mysql 쿼리를 사용하여 양식 데이터를 데이터베이스에 삽입할 수 없습니다. (0) | 2023.08.11 |
---|---|
유니코드 지원에 wchar_t가 필요합니까? (0) | 2023.08.11 |
Node.js 로깅 (0) | 2023.08.11 |
Swift 배열에 작업(연합, 교차로)을 설정하시겠습니까? (0) | 2023.08.11 |
CORS(Cross-Origin Resource Sharing) - 여기에 누락된 내용이 있습니까? (0) | 2023.08.11 |