找不到序列化的n:m关系表

时间:2018-10-11 18:36:19

标签: javascript postgresql typescript sqlite sequelize.js

我正在使用打字稿和续集,并且有下表:先知模型任务,它们都有一个n :m相互关联,因此sequelize会自动创建其他3个表: modelProphets modelTask​​s prophetTasks 。 我为每个模型都有一个简单的存储库,模型和任务在存储库中有一个额外的功能:

A

im对每个存储库功能进行单元测试,但事实是,当我使用sequelize方言“ sqlite”运行时,一切正常,但是如果我将其更改为本地docker postgres并再次运行,则会在运行期间抛出错误该查询说'modelProphets'不存在(如果我先运行任务而不是模型,则为prophetTasks)。所有其他回购功能,例如创建,删除,更新,查找,一切正常。我什至使用pgAdmin4检查了数据库,并且所有关系表都在那里,所以...

当sqlite运行正常时,为什么sequelize在PostgreSQL中给我这个错误?每个数据库的自动关系表是否不同?每个DB Im测试都应该有一个不同的存储库吗?

1 个答案:

答案 0 :(得分:1)

我没有过多地使用续集,但Postgres在使用大写字母时效果不佳。如果希望Postgres保留名称的大小写,请将表名放在双引号中。

  

引用标识符也使其区分大小写,而未引用   名称总是折叠为小写。例如,标识符   PostgreSQL认为FOO,foo和“ foo”相同,但是“ Foo”   和“ FOO”彼此不同。 (折叠   PostgreSQL中无引号的小写字母名称与   SQL标准,该标准指出未加引号的名称应折叠成大写   案件。因此,foo应该等效于“ FOO”而不是“ foo”   标准。如果您想编写可移植的应用程序,那么您就是   建议始终引用一个特定名称,或者永远不要引用它。)

来自docs