/** * 브라우저 콘솔에서 실행하는 마이그레이션 스크립트 * * 사용 방법: * 1. 브라우저에서 ERP 시스템에 로그인 * 2. F12 눌러서 개발자 도구 열기 * 3. Console 탭 선택 * 4. 아래 코드 전체를 복사해서 붙여넣고 Enter */ (async function runMigration() { console.log("🚀 마이그레이션 043 시작: 이미지 컬럼을 TEXT로 변경"); const sql = ` -- item_info 테이블의 image 컬럼 변경 DO $$ BEGIN IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_name = 'item_info' AND column_name = 'image' ) THEN ALTER TABLE item_info ALTER COLUMN image TYPE TEXT; RAISE NOTICE 'item_info.image 컬럼을 TEXT 타입으로 변경했습니다.'; ELSE RAISE NOTICE 'item_info.image 컬럼이 존재하지 않습니다.'; END IF; END $$; -- 모든 테이블에서 image 관련 VARCHAR 컬럼을 TEXT로 변경 DO $$ DECLARE rec RECORD; BEGIN FOR rec IN SELECT table_name, column_name, character_maximum_length FROM information_schema.columns WHERE table_schema = 'public' AND data_type IN ('character varying', 'varchar') AND ( column_name ILIKE '%image%' OR column_name ILIKE '%img%' OR column_name ILIKE '%picture%' OR column_name ILIKE '%photo%' ) AND character_maximum_length IS NOT NULL AND character_maximum_length < 10000 LOOP EXECUTE format('ALTER TABLE %I ALTER COLUMN %I TYPE TEXT', rec.table_name, rec.column_name); RAISE NOTICE '%.% 컬럼을 TEXT 타입으로 변경했습니다. (이전: VARCHAR(%))', rec.table_name, rec.column_name, rec.character_maximum_length; END LOOP; END $$; `; try { const response = await fetch('/api/dashboards/execute-dml', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: sql }), credentials: 'include' }); const result = await response.json(); if (result.success) { console.log("✅ 마이그레이션 성공!", result); console.log("📊 이제 이미지를 저장할 수 있습니다!"); } else { console.error("❌ 마이그레이션 실패:", result); console.log("💡 수동으로 실행해야 합니다. RUN_043_MIGRATION.md 참고"); } } catch (error) { console.error("❌ 마이그레이션 오류:", error); console.log("💡 수동으로 실행해야 합니다. RUN_043_MIGRATION.md 참고"); } })();