इस उत्तर पर एक नज़र डालें। execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);"
create_table ब्लॉक में प्राथमिक_की पैरामीटर निर्दिष्ट किए बिना।
मेरा सुझाव है कि आप अपना माइग्रेशन इस तरह लिखें (ताकि आप सामान्य रूप से रोलबैक कर सकें):
class CreateShareholders < ActiveRecord::Migration
def up
create_table :shareholders, id: false do |t|
t.integer :uid, limit: 8
t.string :name
t.integer :shares
t.timestamps
end
execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);"
end
def down
drop_table :shareholders
end
end
यूपीडी: प्राकृतिक तरीका है (यहां पाया गया), लेकिन केवल int4 प्रकार के साथ:
class CreateShareholders < ActiveRecord::Migration
def change
create_table :shareholders, id: false do |t|
t.primary_key :uid
t.string :name
t.integer :shares
t.timestamps
end
end
end