-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfaq.html
More file actions
executable file
·166 lines (166 loc) · 11.3 KB
/
faq.html
File metadata and controls
executable file
·166 lines (166 loc) · 11.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>常见问题 - Walminer</title>
<link rel="icon" type="image/jpeg" href="../image/logo.jpg">
<style>
:root {
--bg-primary: #0a0a0a;
--bg-secondary: rgba(20, 20, 20, 0.9);
--bg-card: rgba(255, 255, 255, 0.03);
--bg-card-hover: rgba(255, 255, 255, 0.05);
--border-color: rgba(255, 255, 255, 0.08);
--border-light: rgba(255, 255, 255, 0.1);
--text-primary: #e4e4e7;
--text-secondary: #a1a1aa;
--text-muted: #71717a;
--text-title: #f4f4f5;
--text-gradient-start: #fafafa;
--text-gradient-end: #a1a1aa;
--grid-opacity: 0.1;
--orb-opacity: 0.5;
}
body.light-mode {
--bg-primary: #ffffff;
--bg-secondary: rgba(255, 255, 255, 0.95);
--bg-card: rgba(0, 0, 0, 0.02);
--bg-card-hover: rgba(0, 0, 0, 0.04);
--border-color: rgba(0, 0, 0, 0.08);
--border-light: rgba(0, 0, 0, 0.1);
--text-primary: #18181b;
--text-secondary: #52525b;
--text-muted: #71717a;
--text-title: #27272a;
--text-gradient-start: #18181b;
--text-gradient-end: #52525b;
--grid-opacity: 0.06;
--orb-opacity: 0.3;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.7; transition: background 0.3s, color 0.3s; }
.grid-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(120, 119, 198, var(--grid-opacity)) 1px, transparent 1px), linear-gradient(90deg, rgba(120, 119, 198, var(--grid-opacity)) 1px, transparent 1px); background-size: 50px 50px; animation: gridMove 20s linear infinite; pointer-events: none; z-index: 0; }
@keyframes gridMove { 0% { background-position: 0 0; } 100% { background-position: 50px 50px; } }
.orb { position: fixed; border-radius: 50%; filter: blur(80px); opacity: var(--orb-opacity); pointer-events: none; z-index: 1; transition: opacity 0.3s; }
.orb-1 { width: 400px; height: 400px; background: radial-gradient(circle, #6366f1 0%, transparent 70%); top: -100px; right: -100px; animation: float 8s ease-in-out infinite; }
.orb-2 { width: 300px; height: 300px; background: radial-gradient(circle, #8b5cf6 0%, transparent 70%); bottom: 10%; left: -100px; animation: float 10s ease-in-out infinite reverse; }
@keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(30px, -30px) scale(1.1); } 66% { transform: translate(-20px, 20px) scale(0.9); } }
nav { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); z-index: 100; width: 1200px; max-width: calc(100vw - 40px); padding: 15px 40px; display: flex; justify-content: space-between; align-items: center; background: var(--bg-secondary); backdrop-filter: blur(20px); border: 1px solid var(--border-light); border-radius: 50px; transition: background 0.3s, border-color 0.3s; }
.logo { font-size: 1.5rem; font-weight: 700; background: linear-gradient(135deg, #6366f1, #8b5cf6, #ec4899); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-decoration: none; }
.nav-links { display: flex; gap: 30px; align-items: center; }
.nav-links a { color: var(--text-secondary); text-decoration: none; font-size: 0.9rem; transition: color 0.3s; }
.nav-links a:hover { color: var(--text-primary); }
.theme-toggle { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border-light); background: var(--bg-card); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; transition: all 0.3s; }
.theme-toggle:hover { background: var(--bg-card-hover); transform: scale(1.05); }
.container { position: relative; z-index: 10; max-width: 900px; margin: 0 auto; padding: 150px 30px 80px; }
.header { text-align: center; margin-bottom: 60px; }
.header h1 { font-size: 2.5rem; font-weight: 700; margin-bottom: 15px; background: linear-gradient(135deg, var(--text-gradient-start), var(--text-gradient-end)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.header p { color: var(--text-muted); font-size: 1.1rem; }
.faq-grid { display: grid; gap: 15px; }
.faq-item { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; overflow: hidden; }
.faq-item summary { padding: 20px 25px; cursor: pointer; font-weight: 500; display: flex; justify-content: space-between; align-items: center; list-style: none; transition: background 0.3s; color: var(--text-title); }
.faq-item summary:hover { background: var(--bg-card-hover); }
.faq-item summary::after { content: '+'; font-size: 1.5rem; color: #6366f1; }
.faq-item[open] summary::after { content: '−'; }
.faq-item p { padding: 0 25px 20px; color: var(--text-secondary); line-height: 1.7; }
.contact-box { background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(139, 92, 246, 0.1)); border: 1px solid rgba(99, 102, 241, 0.2); border-radius: 20px; padding: 40px; text-align: center; margin-top: 60px; }
.contact-box h3 { font-size: 1.5rem; margin-bottom: 15px; }
.contact-info { display: flex; justify-content: center; gap: 40px; margin-top: 30px; flex-wrap: wrap; }
.contact-item { display: flex; align-items: center; gap: 10px; color: var(--text-secondary); }
footer { border-top: 1px solid var(--border-light); padding: 40px 20px; text-align: center; color: var(--text-muted); }
@media (max-width: 768px) {
nav { padding: 15px 20px; }
.container { padding: 150px 20px 60px; }
.header h1 { font-size: 1.8rem; }
}
</style>
</head>
<body>
<div class="grid-bg"></div>
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<nav>
<a href="index.html" class="logo">Walminer</a>
<div class="nav-links">
<a href="index.html">首页</a>
<a href="pricing.html">授权方案</a>
<button class="theme-toggle" id="themeToggle" title="切换主题">🌙</button>
</div>
</nav>
<div class="container">
<div class="header">
<h1>常见问题</h1>
<p>解答您在使用 Walminer 过程中可能遇到的问题</p>
</div>
<div class="faq-grid">
<details class="faq-item">
<summary>为什么没有解析结果?</summary>
<p>确认解析指定的 WAL 目录中的 WAL 文件是否有数据。检查 WAL 文件是否完整,以及数据字典是否正确匹配。建议使用 walminer pgto init 查看是否有可解析的 WAL 记录。</p>
</details>
<details class="faq-item">
<summary>为什么解析结果有 WALMINER_DATA_MISSED?</summary>
<p>出现 WALMINER_DATA_MISSED 是因为没有找到这个 WAL 记录所依赖的 checkpoint 点。例如解析 000000010000000100000009 文件时,可能需要依赖 000000010000000100000005 文件。需要增加更多的 WAL 文件来支撑解析。</p>
</details>
<details class="faq-item">
<summary>为什么没有最新的解析结果?</summary>
<p>确认 WAL 目录中的 WAL 文件是否连续,如果有某个 WAL 文件的缺失,那么缺失文件之后的数据就无法解析了。另外,确认 WAL 目录中只有单一时间线的 WAL 文件,否则也可能产生解析异常。</p>
</details>
<details class="faq-item">
<summary>为什么 builtdic 报错 Can not connect XXX?</summary>
<p>执行 builtdic 命令时如果与数据库不在同一个机器,4.10.2 之前的版本需要为当前数据库用户设置流复制权限。4.10.2 之后版本不再需要流复制权限,且会自动跳过无法连接的数据库。</p>
</details>
<details class="faq-item">
<summary>为什么有 "invalid byte value for encoding" 报错?</summary>
<p>可能的原因有两个:1)license 版本不正确,请使用最新的 walminer 版本;2)wal2sql 的 -t=3 功能有缺陷,出现问题可以暂时放弃使用 -t=3 选项。</p>
</details>
<details class="faq-item">
<summary>个人版和企业版有什么区别?</summary>
<p>个人版永久使用但有解析限速,仅限个人学习使用,不支持插件数据类型解析功能。企业版无功能限制,提供问题咨询和 Bug 优先修复服务,绑定数据库 ID 或机器 ID。</p>
</details>
<details class="faq-item">
<summary>支持哪些 PostgreSQL 版本?</summary>
<p>Walminer 4.0 支持 PostgreSQL 10 及以上所有版本,包括 PG11-18 全系列。同时兼容 PolarDB、openGauss、HaloDB 等数据库衍生版本。</p>
</details>
<details class="faq-item">
<summary>License 文件过期怎么办?</summary>
<p>限时 License 过期后需要联系作者重新获取。个人版 License 需要联网使用,企业版 License 永久有效但绑定机器或数据库。升级或重装系统可能导致机器识别码变化,需提前联系作者配合重新生成 License。</p>
</details>
</div>
<div class="contact-box" id="contact">
<h3>还有问题?</h3>
<p style="color: #a1a1aa;">联系我们的技术支持团队获取帮助</p>
<div class="contact-info">
<div class="contact-item"><span>📧</span> lchch1990@sina.cn</div>
<div class="contact-item"><span>💬</span> QQ群: 811105058</div>
<div class="contact-item"><span>💬</span> 微信: L974466845</div>
</div>
</div>
</div>
<footer>
<p>Walminer - 专业 PostgreSQL WAL 解析工具</p>
<p style="margin-top: 10px; font-size: 0.85rem;">Copyright 2024</p>
</footer>
<script>
(function() {
const themeToggle = document.getElementById('themeToggle');
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
const currentTheme = localStorage.getItem('theme');
let isDark = currentTheme === 'dark' || (!currentTheme && prefersDarkScheme.matches);
function applyTheme(dark) {
if (dark) {
document.body.classList.remove('light-mode');
themeToggle.textContent = '🌙';
localStorage.setItem('theme', 'dark');
} else {
document.body.classList.add('light-mode');
themeToggle.textContent = '☀️';
localStorage.setItem('theme', 'light');
}
}
applyTheme(isDark);
themeToggle.addEventListener('click', function() { isDark = !isDark; applyTheme(isDark); });
})();
</script>
</body>
</html>