Skip to content

Mysql数据库设计不合理导致ipv6记录出错,数据库无法完成迁移 #243

@TigerIIAusfB

Description

@TigerIIAusfB

hfish版本 v3.3.4

我在尝试将数据从SQLite迁移至mysql的时候,发生了一下报错

Image

从图中可以看出是数据库数值过长导致的错误,无法完成迁移

仔细查看系统报错产生的信息以及插入的相关sql语句,可以发现是“ipaddress”表中的“ip”这一列数据过长,插入的“ip”数值应为一个ipv6地址“2001:19f0:6001:2c59:beef:45:c1a2:cc1b”,就是这条数据发生了错误

使用navicat连接数据查看该“ipaddress”表可以发现,“ip”字段使用的是varchar(32)

Image

一个全写的ipv6地址的最大长度应为39个字,这里使用varchar(32)明显不合理。我尝试手动修改数据类型后再执行迁移,但没有起到任何作用,在页面执行该数据库迁移时,系统似乎会重新构建该表项

以上,该数据数值设计问题理论上会可能影响多数ipv6记录入库,希望可以尽快调整相关的sql语句,将varchar(32)改成varchar(40)或者更高以解决该bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions