sai
1
* 描述问题
网页中对数据表创建外键,名称与数据库中实际创建的外键字段名称不一致,且网页删除外键后,数据库中的相关外键字段不会同步删除
* 运行环境
docker
如何重现
预期行为
截图
首先创建了2个表,员工表employee,资料表profile
网页端员工表原始状态
数据库中员工表原始状态
网页中资料表原始状态
数据库中资料表原始状态
员工表添加 has one关系字段,外键名为employeeID
此时数据库profile资料表中会多一个外键,但是名字和前面网页中的命名不一致,设置的为employeeID,实际在profile资料表中创建的外键名称为employee_i_d
随后在网页界面profile资料数据表中删除employeeID 和 employee员工数据表中删除profilr关系字段
但是profile表中的employee_i_d这个外键不会被删除掉, 不知道是不是由于网页端外键名称和实际数据库中外键名称不一致导致了,数据库中的这个字段无法被删除掉.
日志
看看环境变量 DB_UNDERSCORED 是否被设置为 true 了,为 true 的情况要使用 snake case 风格命名字段,比如这里的外键,应该命名为 employee_id
sai
3
多谢,我看了下当前的环境变量DB_UNDERSCORED确实是true,试着使用正确的风格命名后,网页端和数据库里面字段一致了,但是通过网页端在两个相关的表中删除相关外键字段后,网页端该字段消失了,但是数据库中资料表的外键还是依然存在,不知道这是属于bug还是系统设计就是如此呢?
理解你的profile的意思,是准备用于扩展用户表字段,但不修改基础用户表。是这个意思吧。
在nocobase中,应该使用继承方式(其实我觉得叫一对一扩展比较好)。也就是新建一个表【用户扩展表】,在其内设置一个继承【用户表】。
你再试试你的想法
sai
5
多谢回答!但是mysql好像不支持继承表,而且我其实想表达的是这种关系字段在网页上进行删除后数据库的表里面不会被删除掉相应的字段的问题,因为的有些表可能需要使用到外键 一对多这种关系,之前在创建相关表和关系字段后,由于觉得不合适进行了修改删除再重新创建一个关系字段,后来突然发现数据库中,之前删掉的字段还在,就觉得很疑惑,事例中主要想用这个一对一的来举个例子给开发者看看是不是bug
support
6
外键在 NocoBase 的数据表管理中也是可见的,手动删除
sai
7
你是说的像我贴的倒数第二张图片那样吗?我就是从这里删除的,但是实际数据库的表中并没有被删除 掉,现在都是手动连接到数据库中去删掉相关字段的.