Phoenix Ecto找不到在其他架构中创建的表

时间:2018-07-29 00:25:02

标签: elixir ecto phoenix

我是Elixir / Phoenix / Ecto的新手。我使用ecto.migration创建了具有4种不同模式的数据库。表格创建正确,但是当我尝试查询表格时,ecto找不到它们。

ERROR 42P01 (undefined_table): relation "users" does not exist

我知道问题与数据库架构有关,因为当我在默认架构中创建用户表时,ecto会发现它没有任何问题。

1 个答案:

答案 0 :(得分:1)

确保迁移文件和架构文件具有相同的表名“ users”。 您可以使用mix ecto.migrations命令来检查每个迁移文件的状态,以确保已将其应用于数据库。

在Phoenix中,您不必直接使用Ecto创建架构。您可以使用phoenix命令来帮助您创建必要的文件和模块:

mix phx.gen.html Accounts User users username:string age:integer

这将创建一个迁移文件,该文件将创建一个“用户”表。还将创建一个名为MyApp.Accounts.User的架构文件和模块,该文件和模块将通过users宏与schema "users" do表绑定。

如果要手动创建迁移文件,请确保在各处(即查询和架构文件中)使用正确的表名。