songquanpeng / one-api

OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用. OpenAI key management & redistribution system, using a single API for all LLMs, and features an English UI.
https://openai.justsong.cn/
MIT License
16.06k stars 3.73k forks source link

sqlite数据库迁移到mysql数据库出现字段类型不一致的问题,token下的models字段为啥在mysql下被限定为了191的长度 #1483

Open ConleyKong opened 1 month ago

ConleyKong commented 1 month ago

例行检查

问题描述 先前使用docker部署的sqlite版本,积累了一定数据,想要将数据迁移到mysql下但是数据迁移成功后使用docker-compose启动连接mysql后会出现自动的alter字段的问题,sqlite下的token表的models字段text是合理的,但是启动的docker-compose连接mysql却要将其改为varchar(191),不太理解是什么原因

复现步骤 首先将sqlite的数据使用 sqlite3mysql -f one-api.db -d one_api -u xxx -p 迁移到mysql数据库,然后使用docker-compose启动oneapi并连接该数据库会出现异常无法启动,原因就是字段格式冲突

预期结果 token下的models实际上是text类型是合理的,如果限定为191后,有些token下支持特别多模型的情形应该就会有异常吧?

相关截图

one-api-1 | [SYS] 2024/05/29 - 20:18:56 | One API v0.6.6-alpha.15 started one-api-1 | [SYS] 2024/05/29 - 20:18:56 | using MySQL as database one-api-1 | [SYS] 2024/05/29 - 20:18:56 | database migration started one-api-1 | one-api-1 | 2024/05/29 20:18:56 /build/model/main.go:117 Error 1406 (22001): Data too long for column 'models' at row 1 one-api-1 | [8.714ms] [rows:0] ALTER TABLE tokens MODIFY COLUMN models varchar(191) DEFAULT '' one-api-1 | [FATAL] 2024/05/29 - 20:18:56 | [failed to initialize database: Error 1406 (22001): Data too long for column 'models' at row 1] one-api-1 exited with code 0 one-api-1 | [SYS] 2024/05/29 - 20:18:56 | One API v0.6.6-alpha.15 started one-api-1 | [SYS] 2024/05/29 - 20:18:56 | using MySQL as database one-api-1 | [SYS] 2024/05/29 - 20:18:56 | database migration started

JuneYaooo commented 4 weeks ago

+1