我正在尝试移动现有的代码库,以便对Postgres数据库的上下文使用EF6迁移。
创建初始迁移并尝试将其应用于空数据库后,我收到约束名称已存在的错误。这似乎与EF6 (或迁移)为处理Postgres的约束名称限制而进行的截断有关
有没有什么方法可以覆盖这种行为,而不是截断,而不是截断,并添加全名的散列以保持唯一性?
或者,有没有其他方法来解决这个问题?我猜oracle dbs也有同样的问题吧?有没有人解决了与他们有关的问题?
发布于 2020-07-23 21:28:29
这不是EF问题。缺省情况下,PostgreSQL中的标识符为limited to 63 bytes
系统使用的标识符不超过NAMEDATALEN-1个字节;可以在命令中写入更长的名称,但它们将被截断。默认情况下,NAMEDATALEN为64,因此最大标识符长度为63字节。如果此限制有问题,可以通过更改src/include/pg_config_manual.h中的NAMEDATALEN常量来提高此限制。
所以你应该先看看那里。Some info here also
在我之前的一个项目中,我们使用了PostrgeSQL,最后我只是手动分配了所需的名称。如果你首先使用代码,你也可以查看custom conventions (或this answer),但我没有亲自使用过它们。
https://stackoverflow.com/questions/63055288
复制相似问题