初始化
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# 数据库回滚模式 (Hyperf Migration)
|
||||
|
||||
## 安全回滚策略
|
||||
|
||||
### 添加字段(可回滚)
|
||||
```php
|
||||
// Migration up()
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->string('avatar_url')->nullable()->after('email');
|
||||
});
|
||||
|
||||
// Migration down()
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn('avatar_url');
|
||||
});
|
||||
```
|
||||
|
||||
### 删除字段(不可逆 — 需预备份)
|
||||
```sql
|
||||
-- 删除前先备份
|
||||
CREATE TABLE _backup_users_phone AS
|
||||
SELECT id, phone FROM users WHERE phone IS NOT NULL;
|
||||
```
|
||||
|
||||
### 重命名字段(分步迁移)
|
||||
```php
|
||||
// Step 1: 添加新列
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->string('display_name')->nullable()->after('name');
|
||||
});
|
||||
|
||||
// Step 2: 迁移数据
|
||||
DB::statement('UPDATE users SET display_name = name');
|
||||
|
||||
// Step 3: 删除旧列(下一个迁移文件)
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn('name');
|
||||
});
|
||||
```
|
||||
|
||||
### 类型变更(分步迁移)
|
||||
```
|
||||
Step 1: 添加新列 → Step 2: 迁移数据 → Step 3: 删除旧列
|
||||
```
|
||||
|
||||
## 回滚命令
|
||||
|
||||
```bash
|
||||
# 回滚最近一次迁移
|
||||
php bin/hyperf.php migrate:rollback
|
||||
|
||||
# 回滚最近 N 次迁移
|
||||
php bin/hyperf.php migrate:rollback --step=3
|
||||
|
||||
# 查看迁移状态
|
||||
php bin/hyperf.php migrate:status
|
||||
```
|
||||
Reference in New Issue
Block a user