Files
license-manager/backend/migrations/009_update_authorization_codes_code_length.sql

20 lines
1.1 KiB
SQL

-- 更新授权码表code字段长度以支持自包含配置
-- 使用HMAC签名的极简格式,预计长度80-200字符,预留足够空间
-- MySQL
-- 删除现有的UNIQUE索引(基于code字段的唯一索引)
-- 注意:如果索引不存在会报错但不影响迁移,可以忽略
ALTER TABLE authorization_codes DROP INDEX IF EXISTS idx_authorization_codes_code;
-- 修改字段长度为1000字符以支持更长的授权码
ALTER TABLE authorization_codes MODIFY COLUMN code varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL;
-- 创建前缀UNIQUE索引(只索引前255个字符,足够区分授权码)
-- 这样既保证唯一性,又避免了InnoDB的索引长度限制(3072字节)
CREATE UNIQUE INDEX idx_authorization_codes_code_prefix ON authorization_codes(code(255));
-- 注意事项:
-- 1. 此迁移会更改现有数据结构,请在生产环境执行前做好备份
-- 2. 前缀索引保证了唯一性,但只检查前255个字符的唯一性
-- 3. 对于LIC-{随机}-{Base64数据}格式,前255字符的碰撞概率极低