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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions