Мне нужно использовать 14-значный bigInt в качестве первичного ключа в приложении 4.1.2 рельсов. Использование старых постов на SO в качестве руководства, я придумал следующее для решения этой проблемы ...Рельсы 4 MySQL большие проблемы и ошибки первичного ключа
class CreateAcctTransactions < ActiveRecord::Migration
def change
create_table "acct_transactions", :id => false do |t|
t.integer :id, :limit => 8,null: false
t.integer "account_id",limit: 8,null: false
t.integer "transaction_type_id", null: false
t.datetime "date",null: false
t.text "description",limit: 255
t.decimal "amount",precision: 10, scale: 2, null: false
end
end
end
Однако этот метод не очень назначьте «ID» в качестве первичного ключа , это просто другое обычное поле. Кроме того, когда я получаю следующее сообщение об ошибке ...
Mysql2::Error: Field 'id' doesn't have a default value: INSERT INTO
acct_transactions
(account_id
,amount
,date
,description
,transaction_type_id
) VALUES (224149525446, 222.450361056561, '1970-12-18 00:00:00', 'Transfer', 6)
, когда я пытаюсь запустить следующий файл семян ...
account_transactions = []
accounts.each do |i|
80.times do |j|
type = types.sample
case (type)
...
end
t = AcctTransaction.new
t.id = SecureRandom.random_number(99999999999999) # 14-digit BigInt
t.account_id = accounts[j].id
t.transaction_type_id = type
t.date = Time.at((Time.now.month - 18) + rand * (Time.now.to_f)).to_date
t.description = description
t.amount = amount
t.save
account_transactions << t
end
end
Миграция работает нормально, но таблица не будет и семя id не является первичным. Я сделал ошибку? Или есть лучший способ сделать это?
Большое спасибо
Возможный дубликат [rails3 bigint primary key] (http://stackoverflow.com/questions/5880207/rails3-bigint-primary-key) – eritiro