2016-12-22 17 views
0

例如,我需要使用自定義ID將數據保存在數據庫中。Rails,使用自定義ID保存記錄

User.create(id: 467, name: "foo") 

但它返回到我的錯誤: Mysql2::Error - Lock wait timeout exceeded; try restarting transaction:。我知道這個錯誤(連接ID,因爲如果我這樣做User.create(name: 'foo')它的工作原理。

我必須說,表是空的,所以沒有衝突,應該會出現。

但這需要做什麼。(我知道我打破軌/紅寶石公約,但仍然)

+2

您可以在'users'表中創建一個名爲'uid'的新列來設置自定義ID。 –

+0

這不是我想要的。這件事真的應該看起來如何(不幸的是,這是不可能的,不創建任何列) –

+0

爲什麼你需要這樣做?也許我們可以幫助你解決元問題(也就是說,你不應該這樣做......所以我們可以幫你找到一個不用這種方式來實現你的目標)。 –

回答

1

如果是Rails的4:

User.create(:name=> 'foo').update_column(:id, 467) 

這將需要額外的數據庫查詢,因爲它是對Rails約定

+0

這將設置':id'的值,而不檢查它是否已經存在。假設它仍然是一個id,它在表中必須是唯一的。 –

+0

@JagdeepSingh好點。這是設置自定義ID的問題。 – Shannon

+0

不錯,謝謝! –

相關問題