【问题标题】:ecto failing to create table in postgresqlecto 无法在 postgresql 中创建表
【发布时间】:2017-01-25 02:03:42
【问题描述】:

我正在使用 Phoenix 框架,并在本书中使用 Phoenix 编程。
该项目是使用mix 创建的。数据库用户和密码的相关配置已根据需要更新。 输入以下命令并定义模型 用户模型 - 这遵循书中的示例:

defmodule Rumbl.User do

    use Rumbl.Web, :model
    schema "users" do
        field :name, :string
        field :username, :string
        field :password, :string, virtual: true
        field :password_hash, :string
        timestamps
    end
end

步骤:

  1. mix ecto.create

  2. mix ecto.gen.migration create_user

    生成 xxxx_create_user.exs 文件

  3. mix ecto.migrate

    产生对 schema_migrations 的更新,但不在 PostgreSQL 中创建用户表。

很好奇我在这里可能做错了什么。

【问题讨论】:

  • 您是否遇到任何错误?
  • 没有错误。从头开始,仍然没有成功。
  • xxxx_create_user.exs的内容是什么?
  • 显然生成的 create_user.exs 文件没有创建表和字段... defmodule Rumbl.Repo.Migrations.CreateUser 确实使用 Ecto.Migration def change do end end

标签: postgresql migration phoenix-framework ecto


【解决方案1】:

在你运行mix ecto.gen.migration create_user 命令后,你会得到一个对数据库没有任何作用的迁移文件。

您需要自己在生成的迁移文件中create该表:

  def change do
    create table(:users) do
      add :name, :string
      add :username, :string
      add :password_hash, :string

      timestamps()
    end
  end

之后,运行 mix ecto.migration 应该会根据需要修改您的数据库架构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2020-07-05
    • 2023-03-11
    相关资源
    最近更新 更多