@@ -113,9 +113,9 @@ php artisan db:migrate [选项]
# --drop-target-first → 迁移前先删除目标库中的同名表(避免表已存在报错)
php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= pgsql --dst-host= 127.0.0.1 --dst-port= 5432 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= postgres --dst-password= 123456 \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= postgres --dst-password= 123456 \
--drop-target-first
```
@@ -129,9 +129,9 @@ php artisan db:migrate \
# --dst-port=1433 → SQL Server 默认端口
php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= sqlsrv --dst-host= 127.0.0.1 --dst-port= 1433 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= sa --dst-password= 123456 \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= sa --dst-password= 123456 \
--drop-target-first
```
@@ -145,8 +145,8 @@ php artisan db:migrate \
# --dst-database → SQLite 文件路径(文件不存在时自动创建)
php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--dst-type= sqlite --dst-database= database/rxthinkcmf.laravel13.ele vue.db
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= sqlite --dst-database= database/rxthinkcmf.laravel13.antd vue.db
```
### MySQL → Oracle
@@ -158,9 +158,9 @@ php artisan db:migrate \
# --dst-type=oracle → 目标驱动为 Oracle(自动建用户 + 序列 + 触发器)
php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= oracle --dst-host= 127.0.0.1 --dst-port= 1521 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= system --dst-password= 123456 \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= system --dst-password= 123456 \
--drop-target-first
```
@@ -186,9 +186,9 @@ php artisan db:migrate \
# -----------------------------------------------------------------------------
php artisan db:migrate \
--src-type= pgsql --src-host= 127.0.0.1 --src-port= 5432 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= postgres --src-password= 123456 \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= postgres --src-password= 123456 \
--dst-type= mysql --dst-host= 127.0.0.1 --dst-port= 3306 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= root --dst-password= root \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= root --dst-password= root \
--drop-target-first
```
@@ -200,9 +200,9 @@ php artisan db:migrate \
# -----------------------------------------------------------------------------
php artisan db:migrate \
--src-type= sqlsrv --src-host= 127.0.0.1 --src-port= 1433 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= sa --src-password= 123456 \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= sa --src-password= 123456 \
--dst-type= mysql --dst-host= 127.0.0.1 --dst-port= 3306 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= root --dst-password= root \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= root --dst-password= root \
--drop-target-first
```
@@ -215,9 +215,9 @@ php artisan db:migrate \
# --tables=laravel_user,laravel_role,laravel_menu → 只迁移这 3 张表
php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= pgsql --dst-host= 127.0.0.1 --dst-port= 5432 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= postgres --dst-password= 123456 \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= postgres --dst-password= 123456 \
--tables= laravel_user,laravel_role,laravel_menu \
--drop-target-first
```
@@ -229,17 +229,17 @@ php artisan db:migrate \
``` bash
$ php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= pgsql --dst-host= 127.0.0.1 --dst-port= 5432 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= postgres --dst-password= 123456 \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= postgres --dst-password= 123456 \
--drop-target-first
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
[ 迁移开始] 源: mysql:rxthinkcmf.laravel13.ele vue → 目标: pgsql:rxthinkcmf.laravel13.ele vue
[ 迁移开始] 源: mysql:rxthinkcmf.laravel13.antd vue → 目标: pgsql:rxthinkcmf.laravel13.antd vue
[ 迁移开始] 待迁移 25 张表
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
[ ·] [ 1/5] 建目标库...
· 目标库 "rxthinkcmf.laravel13.ele vue" 已就绪
· 目标库 "rxthinkcmf.laravel13.antd vue" 已就绪
[ ✓] [ 1/5] 建目标库 完成(耗时 0ms)
[ ·] [ 2/5] 建表结构(25 张表)...
[ ✓] [ 2/5] 建表结构 完成(耗时 440ms),25 张表,118 个索引,0 个外键
@@ -271,13 +271,13 @@ $ php artisan db:migrate \
``` bash
$ php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= oracle --dst-host= 127.0.0.1 --dst-port= 1521 \
--dst-database= rxthinkcmf --dst-username= system --dst-password= 123456 \
--drop-target-first
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
[ 迁移开始] 源: mysql:rxthinkcmf.laravel13.ele vue → 目标: oracle:rxthinkcmf.laravel13.ele vue
[ 迁移开始] 源: mysql:rxthinkcmf.laravel13.antd vue → 目标: oracle:rxthinkcmf.laravel13.antd vue
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
[ ·] [ 1/5] 建目标库...
· 目标库 "rxthinkcmf" 已就绪(CREATE USER + GRANT)
@@ -314,9 +314,9 @@ $ php artisan db:migrate \
``` bash
$ php artisan db:migrate \
--src-type= mysql --src-host= 127.0.0.1 --src-port= 3306 \
--src-database= rxthinkcmf.laravel13.ele vue --src-username= root --src-password= root \
--src-database= rxthinkcmf.laravel13.antd vue --src-username= root --src-password= root \
--dst-type= pgsql --dst-host= 127.0.0.1 --dst-port= 5432 \
--dst-database= rxthinkcmf.laravel13.ele vue --dst-username= postgres --dst-password= 123456 \
--dst-database= rxthinkcmf.laravel13.antd vue --dst-username= postgres --dst-password= 123456 \
--tables= laravel_user,laravel_role,laravel_menu \
--drop-target-first
@@ -693,7 +693,7 @@ $PHP_HOME\php.exe -m | findstr sqlite
5. `--drop-target-first` 会删除目标表的全部数据(含索引、外键和注释),请谨慎使用
6. 大表迁移建议调大 `--batch-size` (如 5000)以提高效率
7. 迁移过程中如遇中断,已提交的 `--batch-size` 批次数据不会回滚,建议使用 `--drop-target-first` 重试
8. 含点号的数据库名(如 `rxthinkcmf.laravel13.ele vue` )各驱动均已适配
8. 含点号的数据库名(如 `rxthinkcmf.laravel13.antd vue` )各驱动均已适配
9. 索引、外键和注释在建表阶段同步迁移,使用 `--drop-target-first` 重建时会一并重建
10. 外键约束在所有表创建后统一添加,避免引用顺序问题
11. 命令退出码:成功返回 0,失败或行数校验未通过返回 1(可用于 CI/CD 判断)
@@ -721,7 +721,7 @@ A: 调大 `--batch-size`,如 `--batch-size=5000`。默认 1000 行一批,增
A: 会。所有驱动(MySQL / PostgreSQL / SQL Server / Oracle / SQLite)在目标库不存在时都会自动创建,无需手动建库。建库时会自动从源库读取 collation 并应用(仅当源与目标驱动相同时)。
PostgreSQL 走维护库 `postgres` 执行 `CREATE DATABASE` ,含点号的库名会自动加双引号(如 `"rxthinkcmf.laravel13.ele vue"` );建库失败时抛出 `创建目标数据库失败: …` 并把原始异常保留在 previous 中。
PostgreSQL 走维护库 `postgres` 执行 `CREATE DATABASE` ,含点号的库名会自动加双引号(如 `"rxthinkcmf.laravel13.antd vue"` );建库失败时抛出 `创建目标数据库失败: …` 并把原始异常保留在 previous 中。
### Q: 报 `could not find driver` 怎么办?
@@ -763,7 +763,7 @@ A: Oracle 没有原生自增语法。迁移工具会自动为自增列创建序
### Q: 含点号的数据库名支持吗?
A: 支持。如 `rxthinkcmf.laravel13.ele vue` 这类含点号的库名,各驱动均已适配。
A: 支持。如 `rxthinkcmf.laravel13.antd vue` 这类含点号的库名,各驱动均已适配。
### Q: SQLite 作为目标有什么限制?