37 lines
12 KiB
JavaScript
37 lines
12 KiB
JavaScript
import{_ as a,o as i,c as n,a2 as l}from"./chunks/framework.B-QBKwc1.js";const o=JSON.parse('{"title":"数据库迁移","description":"除了 SQL 脚本导入,项目还提供了 php think db:migrate 命令行工具,支持跨数据库自动迁移(MySQL → PostgreSQL 等),自动迁移索引、外键、字段注释、表注释、","frontmatter":{},"headers":[],"relativePath":"zh/deploy/db-migrate.md","filePath":"zh/deploy/db-migrate.md"}'),e={name:"zh/deploy/db-migrate.md"};function t(p,s,h,k,r,d){return i(),n("div",null,[...s[0]||(s[0]=[l(`<h1 id="_11-3-数据库迁移" tabindex="-1">11.3 数据库迁移 <a class="header-anchor" href="#_11-3-数据库迁移" aria-label="Permalink to "11.3 数据库迁移""></a></h1><div class="tip custom-block"><p class="custom-block-title">CLI 迁移工具</p><p>除了 SQL 脚本导入,项目还提供了 <code>php think db:migrate</code> 命令行工具,支持跨数据库自动迁移(MySQL → PostgreSQL 等),自动迁移索引、外键、字段注释、表注释、默认值和排序规则(collation),数据迁移基于主键稳定排序并支持事务回滚,详见 <a href="/zh/tools/db-migrate.html">7.6 数据库迁移工具</a>。</p></div><h2 id="SQL-脚本目录" tabindex="-1">SQL 脚本目录 <a class="header-anchor" href="#SQL-脚本目录" aria-label="Permalink to "SQL 脚本目录""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>document/</span></span>
|
||
<span class="line"><span>├── mysql/rxthinkcmf.thinkphp8.elevue.sql # MySQL 版本(约 78 万行)</span></span>
|
||
<span class="line"><span>├── postgresql/rxthinkcmf.thinkphp8.elevue.sql # PostgreSQL 版本</span></span>
|
||
<span class="line"><span>├── sqlserver/rxthinkcmf.thinkphp8.elevue.sql # SQL Server 版本</span></span>
|
||
<span class="line"><span>├── oracle/rxthinkcmf.thinkphp8.elevue.sql # Oracle 版本</span></span>
|
||
<span class="line"><span>└── sqlite/rxthinkcmf.thinkphp8.elevue.sql # SQLite 版本</span></span></code></pre></div><p>各数据库脚本已针对对应的 SQL 语法做了适配,可直接导入。</p><h2 id="各数据库导入命令" tabindex="-1">各数据库导入命令 <a class="header-anchor" href="#各数据库导入命令" aria-label="Permalink to "各数据库导入命令""></a></h2><h3 id="MySQL" tabindex="-1">MySQL <a class="header-anchor" href="#MySQL" aria-label="Permalink to "MySQL""></a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># MySQL 导入(mysql 命行工具)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -u root -proot → 用户名和密码</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># rxthinkcmf... → 目标数据库名</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># < file.sql → 将 SQL 文件作为输入执行</span></span>
|
||
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">mysql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -u</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -proot</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> <</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/mysql/rxthinkcmf.thinkphp8.elevue.sql</span></span></code></pre></div><h3 id="PostgreSQL" tabindex="-1">PostgreSQL <a class="header-anchor" href="#PostgreSQL" aria-label="Permalink to "PostgreSQL""></a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># PostgreSQL 导入(psql 命令行工具)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -U postgres → 连接用户</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -d ... → 目标数据库</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -f file.sql → 执行 SQL 文件</span></span>
|
||
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">psql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> postgres</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -d</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -f</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/postgresql/rxthinkcmf.thinkphp8.elevue.sql</span></span></code></pre></div><h3 id="SQL-Server" tabindex="-1">SQL Server <a class="header-anchor" href="#SQL-Server" aria-label="Permalink to "SQL Server""></a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># SQL Server 导入(sqlcmd 命令行工具)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -S localhost → 服务器地址</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -U sa → 用户名(sa 为管理员)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -P root → 密码</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -d ... → 目标数据库</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -i file.sql → 执行 SQL 文件</span></span>
|
||
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlcmd</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -S</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> localhost</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -U</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> sa</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -P</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -d</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> rxthinkcmf.thinkphp8.elevue</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/sqlserver/rxthinkcmf.thinkphp8.elevue.sql</span></span></code></pre></div><h3 id="Oracle" tabindex="-1">Oracle <a class="header-anchor" href="#Oracle" aria-label="Permalink to "Oracle""></a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># Oracle 导入(sqlplus 命令行工具)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># root/root@localhost:1521/XE → 用户/密码@主机:端口/服务名</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># @file.sql → 执行 SQL 文件</span></span>
|
||
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlplus</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> root/root@localhost:1521/XE</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> @document/oracle/rxthinkcmf.thinkphp8.elevue.sql</span></span></code></pre></div><h3 id="SQLite" tabindex="-1">SQLite <a class="header-anchor" href="#SQLite" aria-label="Permalink to "SQLite""></a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># SQLite 导入(sqlite3 命令行工具)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># -----------------------------------------------------------------------------</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 数据库文件路径 → SQLite 数据库存储在单个文件中</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># < file.sql → 将 SQL 文件作为输入执行</span></span>
|
||
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">sqlite3</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /www/api/runtime/database.sqlite</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> <</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/sqlite/rxthinkcmf.thinkphp8.elevue.sql</span></span></code></pre></div><h2 id="注意事项" tabindex="-1">注意事项 <a class="header-anchor" href="#注意事项" aria-label="Permalink to "注意事项""></a></h2><ul><li>每种数据库的主脚本已做语法适配,无需手动转换</li><li>导入前请先创建数据库并配置好用户权限</li><li>详见 <a href="/zh/quickstart/database-init.html">2.4 数据库初始化</a></li></ul>`,18)])])}const A=a(e,[["render",t]]);export{o as __pageData,A as default};
|