49 lines
16 KiB
JavaScript
49 lines
16 KiB
JavaScript
import{_ as a,o as i,c as n,a2 as l}from"./chunks/framework.BbmSSMjL.js";const o=JSON.parse('{"title":"11.3 数据库迁移","description":"","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 artisan db:migrate</code> 命令行工具,支持跨数据库自动迁移(MySQL → PostgreSQL 等),自动迁移索引、外键、字段注释、表注释、默认值和排序规则(collation),数据迁移基于主键稳定排序并支持事务回滚,详见 <a href="/zh/tools/db-migrate.html">7.6 数据库迁移工具</a>。</p></div><div class="info custom-block"><p class="custom-block-title">表结构以 SQL 脚本为准</p><p>本项目 <code>database/migrations/</code> 为空,表结构不通过 Laravel 的 <code>php artisan migrate</code> 管理,而是由 <code>document/</code> 下的 SQL 脚本导入。</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.laravel13.naivevue.sql # MySQL 版本(约 216MB)</span></span>
|
||
<span class="line"><span>├── postgresql/rxthinkcmf.laravel13.naivevue.sql # PostgreSQL 版本</span></span>
|
||
<span class="line"><span>├── sqlserver/rxthinkcmf.laravel13.naivevue.sql # SQL Server 版本</span></span>
|
||
<span class="line"><span>├── oracle/rxthinkcmf.laravel13.naivevue.sql # Oracle 版本</span></span>
|
||
<span class="line"><span>└── sqlite/rxthinkcmf.laravel13.naivevue.sql # SQLite 版本</span></span></code></pre></div><p>各数据库脚本已针对对应的 SQL 语法做了适配,可直接导入。表前缀统一为 <code>laravel_</code>(与 <code>.env</code> 中 <code>DB_PREFIX</code> 一致)。</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.laravel13.naivevue</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> <</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/mysql/rxthinkcmf.laravel13.naivevue.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.laravel13.naivevue</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -f</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/postgresql/rxthinkcmf.laravel13.naivevue.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.laravel13.naivevue</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> -i</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/sqlserver/rxthinkcmf.laravel13.naivevue.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.laravel13.naivevue.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;"> database/database.sqlite</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> <</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> document/sqlite/rxthinkcmf.laravel13.naivevue.sql</span></span></code></pre></div><h2 id="跨数据库迁移-CLI-" tabindex="-1">跨数据库迁移(CLI) <a class="header-anchor" href="#跨数据库迁移-CLI-" aria-label="Permalink to "跨数据库迁移(CLI)""></a></h2><p>在已导入源数据库后,可用 <code>php artisan db:migrate</code> 在不同数据库类型间迁移:</p><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 → PostgreSQL 示例)</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;"># --src-* / --dst-* → 源库与目标库连接参数(端口省略时按驱动取默认值)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># --drop-target-first → 迁移前先删除目标库中的同名表</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># --batch-size → 批量插入行数(默认 1000)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># --tables → 只迁移指定表(逗号分隔),不传则全部</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 目标库不存在时自动创建;迁到 PostgreSQL 需先在 php.ini 启用 extension=pdo_pgsql</span></span>
|
||
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">php</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> artisan</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> db:migrate</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
|
||
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --src-type=mysql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --src-host=127.0.0.1</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --src-port=3306</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
|
||
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --src-database=rxthinkcmf.laravel13.naivevue</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --src-username=root</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --src-password=root</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
|
||
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --dst-type=pgsql</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --dst-host=127.0.0.1</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --dst-port=5432</span><span style="--shiki-dark:#F286C4;--shiki-light:#A65E2B;"> \\</span></span>
|
||
<span class="line"><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --dst-database=rxthinkcmf.laravel13.naivevue</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --dst-username=postgres</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;"> --dst-password=123456</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>脚本体积较大(约 216MB),导入耗时较长,建议在内网或本机执行;可先用 <code>--tables</code> 只迁移部分表</li><li>详见 <a href="/zh/quickstart/database-init.html">2.5 数据库初始化</a></li></ul>`,22)])])}const E=a(e,[["render",t]]);export{o as __pageData,E as default};
|