У меня есть API Rails5, который был создан с нуля, и все последовательности базы данных моих моделей для автоматического увеличения идентификатора создаются автоматически. Когда коллега попытался выполнить db:setup базу данных на новом компьютере, схема была загружена, но последовательности не были созданы, и, следовательно, наши db:seeds не удалось добавить, поскольку существует ограничение «не нуль» на столы.
Исходный столбец идентификатора таблицы выглядит так
id | integer | not null default nextval('users_id_seq'::regclass) | plain |
После запуска db:setup «новая» база данных на новом компьютере выглядит так:
id | integer | not null | plain |
У меня никогда не было этой проблемы с предыдущими версиями Rails, и мне интересно, может ли это быть проблемой v5. Что мы делаем не так?
Спасибо за любые советы!!
В новой базе данных нет последовательностей, отображаемых в postgres при запуске "\ ds;"
Миграция для таблицы пользователей выглядит следующим образом
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :first_name, limit: 25
t.string :last_name, limit: 25
t.string :mobile_phone, limit: 25
t.string :auth_token, limit: 36
t.integer :failed_login_attempts, limit: 2, :default => 0
t.boolean :account_locked, :default => false
t.timestamps
end
end
end
schema.rb для этой таблицы выглядит так (после некоторых более поздних миграций)
create_table "users", id: :integer, force: :cascade do |t|
t.string "first_name", limit: 25
t.string "last_name", limit: 25
t.string "mobile_phone", limit: 25
t.string "auth_token", limit: 36
t.integer "failed_login_attempts", limit: 2, default: 0
t.boolean "account_locked", default: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "email", default: "", null:
t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
end
schema.rb
? - person mu is too short   schedule 29.06.2016id: :integer
кажется вам неправильным или, по крайней мере, подозрительным? Я давно перешел наstructure.sql
, потому что использую вещи, которые ActiveRecord не понимает, поэтому я уверен, ноid: :integer
мне кажется неправильным. - person mu is too short   schedule 29.06.2016structure.sql
вместоschema.rb
довольно просто (краткое описание можно найти на stackoverflow.com/a/31955422/479863). - person mu is too short   schedule 29.06.2016