mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-26 23:46:23 +00:00
error detail for connection errors
This commit is contained in:
@@ -2,6 +2,25 @@ const childProcessChecker = require('../utility/childProcessChecker');
|
|||||||
const requireEngineDriver = require('../utility/requireEngineDriver');
|
const requireEngineDriver = require('../utility/requireEngineDriver');
|
||||||
const connectUtility = require('../utility/connectUtility');
|
const connectUtility = require('../utility/connectUtility');
|
||||||
const { handleProcessCommunication } = require('../utility/processComm');
|
const { handleProcessCommunication } = require('../utility/processComm');
|
||||||
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
function pickSafeConnectionInfo(connection) {
|
||||||
|
return _.mapValues(connection, (v, k) => {
|
||||||
|
if (k == 'engine' || k == 'port' || k == 'authType' || k == 'sshMode' || k == 'passwordMode') return v;
|
||||||
|
if (v === null || v === true || v === false) return v;
|
||||||
|
if (v) return '***';
|
||||||
|
return undefined;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const formatErrorDetail = (e, connection) => `${e.stack}
|
||||||
|
|
||||||
|
Error JSON: ${JSON.stringify(e, undefined, 2)}
|
||||||
|
|
||||||
|
Connection: ${JSON.stringify(pickSafeConnectionInfo(connection), undefined, 2)}
|
||||||
|
|
||||||
|
Platform: ${process.platform}
|
||||||
|
`;
|
||||||
|
|
||||||
function start() {
|
function start() {
|
||||||
childProcessChecker();
|
childProcessChecker();
|
||||||
@@ -14,7 +33,11 @@ function start() {
|
|||||||
process.send({ msgtype: 'connected', ...res });
|
process.send({ msgtype: 'connected', ...res });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
process.send({ msgtype: 'error', error: e.message });
|
process.send({
|
||||||
|
msgtype: 'error',
|
||||||
|
error: e.message,
|
||||||
|
detail: formatErrorDetail(e, connection),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,10 @@
|
|||||||
import FormFieldTemplateLarge from '../forms/FormFieldTemplateLarge.svelte';
|
import FormFieldTemplateLarge from '../forms/FormFieldTemplateLarge.svelte';
|
||||||
|
|
||||||
import ModalBase from './ModalBase.svelte';
|
import ModalBase from './ModalBase.svelte';
|
||||||
import { closeCurrentModal, closeModal } from './modalTools';
|
import { closeCurrentModal, closeModal, showModal } from './modalTools';
|
||||||
import createRef from '../utility/createRef';
|
import createRef from '../utility/createRef';
|
||||||
|
import Link from '../elements/Link.svelte';
|
||||||
|
import ErrorMessageModal from './ErrorMessageModal.svelte';
|
||||||
|
|
||||||
export let connection;
|
export let connection;
|
||||||
|
|
||||||
@@ -92,6 +94,16 @@
|
|||||||
<div class="error-result">
|
<div class="error-result">
|
||||||
Connect failed: <FontIcon icon="img error" />
|
Connect failed: <FontIcon icon="img error" />
|
||||||
{sqlConnectResult.error}
|
{sqlConnectResult.error}
|
||||||
|
<Link
|
||||||
|
onClick={() =>
|
||||||
|
showModal(ErrorMessageModal, {
|
||||||
|
message: sqlConnectResult.detail,
|
||||||
|
showAsCode: true,
|
||||||
|
title: 'Database connection error',
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
Show detail
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{#if isTesting}
|
{#if isTesting}
|
||||||
|
|||||||
@@ -9,18 +9,25 @@
|
|||||||
|
|
||||||
export let title = 'Error';
|
export let title = 'Error';
|
||||||
export let message;
|
export let message;
|
||||||
|
export let showAsCode = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<FormProvider>
|
<FormProvider>
|
||||||
<ModalBase {...$$restProps}>
|
<ModalBase {...$$restProps}>
|
||||||
<div slot="header">{title}</div>
|
<div slot="header">{title}</div>
|
||||||
|
|
||||||
<div class="wrapper">
|
{#if showAsCode}
|
||||||
<div class="icon">
|
<pre>{message}</pre>
|
||||||
<FontIcon icon="img error" />
|
{:else}
|
||||||
|
<div class="wrapper">
|
||||||
|
<div class="icon">
|
||||||
|
<FontIcon icon="img error" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{message}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{message}
|
{/if}
|
||||||
</div>
|
|
||||||
|
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<FormSubmit value="Close" on:click={closeCurrentModal} />
|
<FormSubmit value="Close" on:click={closeCurrentModal} />
|
||||||
@@ -38,4 +45,9 @@
|
|||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-size: 20pt;
|
font-size: 20pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
max-height: calc(100vh - 300px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user