-- TripLog 迁移:存储抽象(本地 / 阿里云 OSS) -- -- 本文件是「记录 + 可手工执行」的版本;实际由 tools/migrate.php 幂等地跑, -- 它同样支持 MySQL 8(注意:MySQL 8 不支持 ADD COLUMN IF NOT EXISTS, -- 所以列的存在性由 PHP 侧查 information_schema 判断)。 CREATE TABLE IF NOT EXISTS `app_settings` ( `setting_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `setting_value` text COLLATE utf8mb4_unicode_ci, `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`setting_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点级键值设置'; -- attachments 增加存储后端相关列(历史行 storage 默认 local,与旧行为一致) ALTER TABLE `attachments` ADD COLUMN `storage` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'local' COMMENT 'local|oss', ADD COLUMN `object_key` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'OSS 对象键;本地存储为 /uploads/... 的相对路径', ADD COLUMN `mime_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, ADD COLUMN `size_bytes` bigint DEFAULT NULL, ADD COLUMN `width` int DEFAULT NULL COMMENT '图片宽(非图片为空)', ADD COLUMN `height` int DEFAULT NULL COMMENT '图片高(非图片为空)', ADD COLUMN `is_image` tinyint(1) NOT NULL DEFAULT '0'; ALTER TABLE `attachments` ADD KEY `idx_storage` (`storage`);