[FIX] Enhanced DB diagnostic messages for connection testing
This commit is contained in:
parent
576880c5bd
commit
3aa442e0fa
@ -153,6 +153,20 @@ router.post('/test-db', isAuthenticated, hasRole('admin'), async (req, res) => {
|
|||||||
|
|
||||||
let conn;
|
let conn;
|
||||||
try {
|
try {
|
||||||
|
// 1. Try to connect without specifying database first to see if credentials/host are OK
|
||||||
|
try {
|
||||||
|
const basicConn = await mysql.createConnection({
|
||||||
|
host, user, password, port: parseInt(port) || 3306, connectTimeout: 3000
|
||||||
|
});
|
||||||
|
await basicConn.end();
|
||||||
|
} catch (basicErr) {
|
||||||
|
return res.status(400).json({
|
||||||
|
success: false,
|
||||||
|
error: `서버 접속 실패: 계정 정보나 호스트/포트를 확인하세요. (${basicErr.message})`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Try to connect with database
|
||||||
conn = await mysql.createConnection({
|
conn = await mysql.createConnection({
|
||||||
host,
|
host,
|
||||||
user,
|
user,
|
||||||
@ -164,7 +178,13 @@ router.post('/test-db', isAuthenticated, hasRole('admin'), async (req, res) => {
|
|||||||
await conn.query('SELECT 1');
|
await conn.query('SELECT 1');
|
||||||
res.json({ success: true, message: '연결 성공: 데이터베이스에 성공적으로 접속되었습니다.' });
|
res.json({ success: true, message: '연결 성공: 데이터베이스에 성공적으로 접속되었습니다.' });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
res.status(400).json({ success: false, error: err.message });
|
let msg = err.message;
|
||||||
|
if (err.code === 'ER_BAD_DB_ERROR') {
|
||||||
|
msg = `데이터베이스 '${database}'가 존재하지 않습니다. MariaDB에서 스키마를 먼저 생성해 주세요.`;
|
||||||
|
} else if (err.code === 'ER_ACCESS_DENIED_ERROR') {
|
||||||
|
msg = '사용자 계정 또는 비밀번호가 일치하지 않거나, 해당 DB에 대한 접근 권한이 없습니다.';
|
||||||
|
}
|
||||||
|
res.status(400).json({ success: false, error: msg });
|
||||||
} finally {
|
} finally {
|
||||||
if (conn) await conn.end();
|
if (conn) await conn.end();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -151,7 +151,11 @@ export function BasicSettingsPage() {
|
|||||||
setTestResult({ success: true, message: res.data.message });
|
setTestResult({ success: true, message: res.data.message });
|
||||||
setIsDbVerified(true);
|
setIsDbVerified(true);
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
setTestResult({ success: false, message: error.response?.data?.error || '접속 테스트에 실패했습니다.' });
|
const detailedError = error.response?.data?.error || error.message || '알 수 없는 오류가 발생했습니다.';
|
||||||
|
setTestResult({
|
||||||
|
success: false,
|
||||||
|
message: `접속 실패: ${detailedError}`
|
||||||
|
});
|
||||||
setIsDbVerified(false);
|
setIsDbVerified(false);
|
||||||
} finally {
|
} finally {
|
||||||
setTesting(false);
|
setTesting(false);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user