PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Problemas ao definir uma chave primária personalizada em uma migração do Rails 4


Dê uma olhada nesta resposta. Tente execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);" sem especificar o parâmetro primary_key no bloco create_table.

Sugiro escrever sua migração assim (para que você possa reverter 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: Existe uma maneira natural (encontrada aqui), mas apenas com o 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