-- ============================================ -- Gnuboard5 R2 Storage Migration -- Version: 1.0.0 -- ============================================ -- 게시판 첨부파일 테이블에 R2 관련 컬럼 추가 ALTER TABLE `g5_board_file` ADD COLUMN `bf_r2_key` VARCHAR(500) DEFAULT NULL COMMENT 'R2 object key (storage path)' AFTER `bf_type`, ADD COLUMN `bf_storage_type` ENUM('local', 'r2') DEFAULT 'local' COMMENT 'Storage type' AFTER `bf_r2_key`; -- 인덱스 추가 (R2 키 조회 최적화) CREATE INDEX `idx_bf_r2_key` ON `g5_board_file` (`bf_r2_key`(255)); CREATE INDEX `idx_bf_storage_type` ON `g5_board_file` (`bf_storage_type`); -- 1:1 문의 첨부파일 테이블 (있는 경우) -- ALTER TABLE `g5_qa_content` -- ADD COLUMN `qa_r2_key1` VARCHAR(500) DEFAULT NULL COMMENT 'R2 object key for file 1', -- ADD COLUMN `qa_r2_key2` VARCHAR(500) DEFAULT NULL COMMENT 'R2 object key for file 2', -- ADD COLUMN `qa_storage_type` ENUM('local', 'r2') DEFAULT 'local'; -- 에디터 첨부파일 추적 테이블 (신규 생성 - 선택사항) CREATE TABLE IF NOT EXISTS `g5_editor_files` ( `ef_no` INT(11) NOT NULL AUTO_INCREMENT, `mb_id` VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'Member ID', `ef_file` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'File name', `ef_source` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Original file name', `ef_filesize` INT(11) NOT NULL DEFAULT 0 COMMENT 'File size in bytes', `ef_width` INT(11) NOT NULL DEFAULT 0 COMMENT 'Image width', `ef_height` INT(11) NOT NULL DEFAULT 0 COMMENT 'Image height', `ef_type` TINYINT(4) NOT NULL DEFAULT 0 COMMENT 'File type (0=file, 1=image)', `ef_r2_key` VARCHAR(500) DEFAULT NULL COMMENT 'R2 object key', `ef_storage_type` ENUM('local', 'r2') DEFAULT 'local' COMMENT 'Storage type', `ef_datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Upload datetime', PRIMARY KEY (`ef_no`), KEY `idx_mb_id` (`mb_id`), KEY `idx_ef_r2_key` (`ef_r2_key`(255)), KEY `idx_ef_storage_type` (`ef_storage_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Editor uploaded files tracking';