2016-08-09 2 views
1

При вставке модели в базу данных MySQL с помощью Elixir + Phoenix я получаю:Phoenix Ecto ** (Mariaex.Error) (1054): Неизвестный столбец 'inserted_at' в 'списке поля'

** (Mariaex.Error) (1054): Unknown column 'inserted_at' in 'field list' 
    stacktrace: 
     (ecto) lib/ecto/adapters/mysql.ex:181: Ecto.Adapters.MySQL.insert/5 
     (ecto) lib/ecto/repo/schema.ex:381: Ecto.Repo.Schema.apply/4 
     (ecto) lib/ecto/repo/schema.ex:185: anonymous fn/11 in Ecto.Repo.Schema.do_insert/4 
     (ecto) lib/ecto/repo/schema.ex:595: anonymous fn/3 in Ecto.Repo.Schema.wrap_in_transaction/6 
     (ecto) lib/ecto/adapters/sql.ex:472: anonymous fn/3 in Ecto.Adapters.SQL.do_transaction/3 
     (db_connection) lib/db_connection.ex:973: DBConnection.transaction_run/4 
     (db_connection) lib/db_connection.ex:897: DBConnection.run_begin/3 
     (db_connection) lib/db_connection.ex:671: DBConnection.transaction/3 

Это не происходит с другими моделями, которые работают нормально. Модель схемы является:

schema "accounts" do 
    field :key, :string, null: false 
    field :cypher_key, :string, null: false 
    field :another_key, :string, null: false 
    field :another_cypher_key, :string, null: false 
    belongs_to :user, MyApp.User 
    timestamps() 
    end 

и при установке я делаю:

Repo.insert! %Account{key: "test", 
         cypher_key: "test", 
         another_key: "test", 
         another_cypher_key: "pk_test" 
      } 

При установке вручную с помощью MySQL CMD он работает нормально.

ответ

0

В вашей таблице содержится timestamps полей? Вы создали для этого правильную миграцию?

Используйте mix ecto.gen.migration, а затем откройте файл, который будет создан в .

Изменяйте change функцию в нечто подобное этим:

def change do 
    create table(:accounts) do 
    add :key, :string 
    # etc. 

    timestamps 
    end 

    create unique_index(:accounts, [:key]) 
end 

Затем примените эту миграцию с mix ecto.migrate.

Надеюсь, это поможет.

+0

Я пропустил это, спасибо, что указал. – David

0

Вполне вероятно, что вы не добавили timestamps в свой файл миграции. Для Ecto.Schema и файла миграции функция timestamps ссылается на два поля: updated_at и inserted_at. Если вы пришли из Ruby on Rails, вы можете заметить разницу в именах от created_at. См. the docs here для более подробной информации.

+0

Я пропустил это, спасибо за указание. – David

Смежные вопросы