PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Problemi nell'impostazione di una chiave primaria personalizzata in una migrazione di Rails 4

Dai un'occhiata a questa risposta. Prova a execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);" senza specificare il parametro primary_key nel blocco create_table.

Ti suggerisco di scrivere la tua migrazione in questo modo (in modo da poter eseguire il rollback normalmente):

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

UPD: C'è un modo naturale (trovato qui), ma solo con tipo 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