sqlite3转mysql binding表问题

环境:

System:
OS: Linux 5.15 Armbian 23.08.0-trunk jammy 22.04 (Jammy Jellyfish)
CPU: (4) arm64 ARMv8 Processor rev 4 (v8l)
Binaries:
Node: 18.17.1
Yarn: 1.22.19
Koishi:
Core: 4.14.1
Console: 5.13.1

MySQL版本:

armbian:data:# mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.4 for Linux on aarch64 ((Ubuntu))

koishi.yml部分

group:storage:
    ~database-sqlite: {}
    database-mysql:
      host: 127.0.0.1
      user: koishiu
      password: ***
      database: koishid

我将sqlite3(koishi.db) .dump后,将INTEGER替换为BIGINT(估计没必要,原本是时间戳超了int上限),将如channel中设为主键TEXT列类型转换为VARCHAR(100)(部分修改),部分表设为主键的BIGINT NULLDEFAULT NULLNOT NULL,将stats_*表中time手动转换为date/datetime,去掉不兼容指令,然后source导入
禁用sqlite插件,启用mysql插件并配置好
但当我运行koishi并群发status命令时,后台报错 添加重复的 (qq号)-onebot 主键对(?):

2023-08-15 13:11:05 [I] gocqhttp-dev 收到群 ****(***) 内 ********(******) 的消息: status (******)          
2023-08-15 13:11:05 [W] mysql INSERT INTO `binding` (`aid`, `bid`, `pid`, `platform`) VALUES (35, 35, '******', 'onebot')       
2023-08-15 13:11:05 [W] session status                              
ER_DUP_ENTRY: Duplicate entry '******-onebot' for key 'binding.PRIMARY'                                                             
at _MySQLDriver.query (/root/koishi/koishi-308/node_modules/@minatojs/driver-mysql/lib/index.js:311:19)                            
 at _MySQLDriver.create (/root/koishi/koishi-308/node_modules/@minatojs/driver-mysql/lib/index.js:444:31)
......

我的onebot qq已绑定在 binding aid = 0, bid = 1这行(auth插件管理员账户绑定(?)),对应 user id=1这行
请问,表binding的主键是否应为 PRIMARY KEY ( pid, platform )(过滤点符号)(sqlite3导出,以及直接编辑.db查找binding)?
(应该是)
又发现,每次发送信息时都会在user创建一个 pid等都为NULL,id自增的用户,对应新增binding的aid
私发也貌似一样
请问是否为我的配置问题?或者mysql适配不好,无法查表?

1 个赞

疑似解决,bid为1 , aid设置为1就没问题了((

1 个赞