我正在研究基於rails的網站的模型,並創建了一個名爲ItemAttributes的模型類,它定義了一組特定項目的有效屬性。例如,「牀大小」是物品「牀」的屬性。我還創建了一個AttributeValue類,它爲屬性定義了有效值,如'king''queen''full'等。Heroku PostgreSQL遷移問題
我試圖在遷移時在heroku上填充PostgreSQL數據庫,但它會拋出這個而不起作用錯誤(遷移本地工作的SQLite的):
PGError: ERROR: current transaction is aborted, commands ignored until end of transaction block
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"attribute_values"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
這裏是我使用的遷移:
class AddBedSizeValues < ActiveRecord::Migration
def self.up
id = ItemAttribute.find_by_name('bed size').id
AttributeValue.create(
:name => 'king',
:item_attribute_id => id
)
AttributeValue.create(
:name => 'queen',
:item_attribute_id => id
)
AttributeValue.create(
:name => 'full',
:item_attribute_id => id
)
AttributeValue.create(
:name => 'x-long twin',
:item_attribute_id => id
)
AttributeValue.create(
:name => 'twin',
:item_attribute_id => id
)
end
我嘗試在此遷移中刪除所有「創建」,並且順利完成。一旦我將一個創建添加到遷移中,同樣的錯誤將會返回。 – kleptocrat 2011-04-12 17:55:26
Heroku開發人員悲傷的頭號原因是在本地使用SQLite。 PostgreSQL是免費的。下載它,安裝它,並停止使用SQLite。 – 2011-05-21 11:08:08