-- AIFlow - 频道表列补充(幂等迁移) -- 补充 001_init.sql 中 channels 表缺失的列 -- Model 中有但这些列在初始建表脚本中遗漏了 USE aiflow; SET @dbname = DATABASE(); -- 1. webhook_url 列(Webhook回调地址) SET @check = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = 'channels' AND COLUMN_NAME = 'webhook_url'); SET @sql = IF(@check = 0, 'ALTER TABLE channels ADD COLUMN webhook_url VARCHAR(500) DEFAULT NULL AFTER platform', 'SELECT ''webhook_url already exists'' AS msg'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 2. credential 列(平台凭证JSON) SET @check = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = 'channels' AND COLUMN_NAME = 'credential'); SET @sql = IF(@check = 0, 'ALTER TABLE channels ADD COLUMN credential JSON DEFAULT NULL AFTER webhook_url', 'SELECT ''credential already exists'' AS msg'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 3. settings 列(频道设置JSON - AI行为配置等) SET @check = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = 'channels' AND COLUMN_NAME = 'settings'); SET @sql = IF(@check = 0, 'ALTER TABLE channels ADD COLUMN settings JSON DEFAULT NULL AFTER credential', 'SELECT ''settings already exists'' AS msg'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 4. is_active 列(是否激活) SET @check = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = 'channels' AND COLUMN_NAME = 'is_active'); SET @sql = IF(@check = 0, 'ALTER TABLE channels ADD COLUMN is_active TINYINT(1) DEFAULT 1 AFTER status', 'SELECT ''is_active already exists'' AS msg'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 5. oauth_state 列(OAuth扫码授权状态 - ClawBot) SET @check = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = 'channels' AND COLUMN_NAME = 'oauth_state'); SET @sql = IF(@check = 0, 'ALTER TABLE channels ADD COLUMN oauth_state VARCHAR(500) DEFAULT NULL AFTER is_active', 'SELECT ''oauth_state already exists'' AS msg'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;