我是Elixir / Phoenix / Ecto的新手。我使用ecto.migration创建了具有4种不同模式的数据库。表格创建正确,但是当我尝试查询表格时,ecto找不到它们。
ERROR 42P01 (undefined_table): relation "users" does not exist
我知道问题与数据库架构有关,因为当我在默认架构中创建用户表时,ecto会发现它没有任何问题。
答案 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
表绑定。
如果要手动创建迁移文件,请确保在各处(即查询和架构文件中)使用正确的表名。