logger->warning('users 테이블에 uuid 컬럼이 없습니다. 마이그레이션을 먼저 실행하세요.'); return; } // 1. UUID가 없는 기존 레코드에 백필 $nullCount = DB::table('users')->whereNull('uuid')->count(); if ($nullCount > 0) { $context->logger->info("UUID 백필 시작: {$nullCount}건의 기존 레코드"); DB::table('users')->whereNull('uuid')->orderBy('id')->chunk(100, function ($users) { foreach ($users as $user) { DB::table('users') ->where('id', $user->id) ->update(['uuid' => Str::orderedUuid()->toString()]); } }); $context->logger->info("UUID 백필 완료: {$nullCount}건 처리"); } else { $context->logger->info('모든 사용자 레코드에 UUID가 이미 존재합니다.'); } // 2. NOT NULL 제약 추가 (아직 nullable인 경우) $columnType = DB::selectOne("SHOW COLUMNS FROM {$context->table('users')} WHERE Field = 'uuid'"); if ($columnType && $columnType->Null === 'YES') { Schema::table('users', function ($table) { $table->uuid('uuid')->nullable(false)->unique()->change(); }); $context->logger->info('uuid 컬럼에 NOT NULL 제약을 추가했습니다.'); } } }