我正在使用打字稿和续集,并且有下表:先知,模型和任务,它们都有一个n :m相互关联,因此sequelize会自动创建其他3个表: modelProphets , modelTasks 和 prophetTasks 。 我为每个模型都有一个简单的存储库,模型和任务在存储库中有一个额外的功能:
A
im对每个存储库功能进行单元测试,但事实是,当我使用sequelize方言“ sqlite”运行时,一切正常,但是如果我将其更改为本地docker postgres并再次运行,则会在运行期间抛出错误该查询说'modelProphets'不存在(如果我先运行任务而不是模型,则为prophetTasks)。所有其他回购功能,例如创建,删除,更新,查找,一切正常。我什至使用pgAdmin4检查了数据库,并且所有关系表都在那里,所以...
当sqlite运行正常时,为什么sequelize在PostgreSQL中给我这个错误?每个数据库的自动关系表是否不同?每个DB Im测试都应该有一个不同的存储库吗?
答案 0 :(得分:1)
我没有过多地使用续集,但Postgres在使用大写字母时效果不佳。如果希望Postgres保留名称的大小写,请将表名放在双引号中。
引用标识符也使其区分大小写,而未引用 名称总是折叠为小写。例如,标识符 PostgreSQL认为FOO,foo和“ foo”相同,但是“ Foo” 和“ FOO”彼此不同。 (折叠 PostgreSQL中无引号的小写字母名称与 SQL标准,该标准指出未加引号的名称应折叠成大写 案件。因此,foo应该等效于“ FOO”而不是“ foo” 标准。如果您想编写可移植的应用程序,那么您就是 建议始终引用一个特定名称,或者永远不要引用它。)
来自docs