fix database

This commit is contained in:
baodev0
2026-07-06 08:28:51 +07:00
parent 61fc870c03
commit 97f64c2dc5
@@ -10,15 +10,24 @@ return new class extends Migration
$serverId = $this->resolveCanonicalServerId();
if ($serverId === null) {
throw new RuntimeException('Không tìm thấy dns_manager_servers để sync foreign key.');
}
$hasOrphaned = DB::table('dns_manager_domain as d')
->leftJoin('dns_manager_servers as s', 's.id', '=', 'd.dns_manager_server_id')
->where(function ($q) {
$q->where('d.dns_manager_server_id', 0)->orWhereNull('s.id');
})
->exists();
DB::statement("
UPDATE dns_manager_domain d
LEFT JOIN dns_manager_servers s ON s.id = d.dns_manager_server_id
SET d.dns_manager_server_id = {$serverId}
WHERE d.dns_manager_server_id = 0 OR s.id IS NULL
");
if ($hasOrphaned) {
throw new RuntimeException('Không tìm thấy dns_manager_servers để sync foreign key cho các bản ghi orphaned.');
}
} else {
DB::statement("
UPDATE dns_manager_domain d
LEFT JOIN dns_manager_servers s ON s.id = d.dns_manager_server_id
SET d.dns_manager_server_id = {$serverId}
WHERE d.dns_manager_server_id = 0 OR s.id IS NULL
");
}
DB::statement('ALTER TABLE dns_manager_domain MODIFY dns_manager_server_id BIGINT UNSIGNED NOT NULL');
DB::statement('ALTER TABLE dns_manager_ns MODIFY dns_manager_domain_id BIGINT UNSIGNED NOT NULL');