Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_NaiveVue/.vitepress/dist/assets/zh_deploy_db-migrate.md.D93GA9lH.js
T
2026-10-11 19:06:33 +08:00

49 lines
16 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 &quot;11.3 数据库迁移&quot;">​</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 &quot;SQL 脚本目录&quot;">​</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 &quot;各数据库导入命令&quot;">​</a></h2><h3 id="MySQL" tabindex="-1">MySQL <a class="header-anchor" href="#MySQL" aria-label="Permalink to &quot;MySQL&quot;">​</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;"># &lt; 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;"> &lt;</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 &quot;PostgreSQL&quot;">​</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 &quot;SQL Server&quot;">​</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 &quot;Oracle&quot;">​</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 &quot;SQLite&quot;">​</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;"># &lt; 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;"> &lt;</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 &quot;跨数据库迁移(CLI)&quot;">​</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 &quot;注意事项&quot;">​</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};