Phoenix Ecto Postgres table 没有创建
Phoenix Ecto Postgres table not creating
喂,
首先,我想让你知道我是 Phoenix Framework 和 Elixir 的新手。我正在学习教程,但遇到了奇怪的问题。我配置了连接,一切正常。但是迁移文件似乎没有被执行。我写了以下文件:
defmodule Hangman.Repo.Migrations.CreateWords do
use Ecto.Migration
def change do
create table(:words) do
add :content, :string
timestamps
end
end
end
这只是一个只有一个字段的简单 table。但是 Table 没有在数据库中创建,但 Ecto 认为一切正常:
18:22:28.669 [info] Already up
这意味着迁移已经执行。您的数据库中应该有一个名为 schema_migrations
的 table,它将对每个迁移的引用存储为 table 中的一行,并带有时间戳(这是您的迁移文件名的前缀)。
执行迁移后,无法在不回滚的情况下再次运行。您应该只在将更改推送到上游之前执行此操作(即没有其他人依赖它)。
mix ecto.rollback
mix ecto.migrate
如果上述方法不起作用,您可以使用以下方法进行完全重置 - 这将清除数据库中的所有数据:
mix do ecto.drop, ecto.create, ecto.migrate
删除数据库并重新创建
运行
mix ecto.migrate
一切顺利
这看起来像是一个非常古老的问题,但仅作记录
我认为 mix ecto.reset
是您要查找的单个命令。
喂, 首先,我想让你知道我是 Phoenix Framework 和 Elixir 的新手。我正在学习教程,但遇到了奇怪的问题。我配置了连接,一切正常。但是迁移文件似乎没有被执行。我写了以下文件:
defmodule Hangman.Repo.Migrations.CreateWords do
use Ecto.Migration
def change do
create table(:words) do
add :content, :string
timestamps
end
end
end
这只是一个只有一个字段的简单 table。但是 Table 没有在数据库中创建,但 Ecto 认为一切正常:
18:22:28.669 [info] Already up
这意味着迁移已经执行。您的数据库中应该有一个名为 schema_migrations
的 table,它将对每个迁移的引用存储为 table 中的一行,并带有时间戳(这是您的迁移文件名的前缀)。
执行迁移后,无法在不回滚的情况下再次运行。您应该只在将更改推送到上游之前执行此操作(即没有其他人依赖它)。
mix ecto.rollback
mix ecto.migrate
如果上述方法不起作用,您可以使用以下方法进行完全重置 - 这将清除数据库中的所有数据:
mix do ecto.drop, ecto.create, ecto.migrate
删除数据库并重新创建
运行
mix ecto.migrate
一切顺利
这看起来像是一个非常古老的问题,但仅作记录
我认为 mix ecto.reset
是您要查找的单个命令。