【问题标题】:How to change primary key in rails migration file?如何更改rails迁移文件中的主键?
【发布时间】:2013-03-15 09:02:33
【问题描述】:

我需要像这样迁移一个旧的 mysql 表:

Products
  name (string, primary_key)

到这个架构:

Products
  id (integer, primary_key, auto_generated)
  name (unique)

我需要在新表中填充 Products.id 值。 如何编写 Rails 迁移文件?我正在使用 Rails 3.2.7

我现在有两个问题: 1. ActiveRecord::Migration 中找不到删除主键的方法 2.我不知道如何为新添加的主键生成值。

【问题讨论】:

标签: ruby-on-rails database-migration rails-migrations


【解决方案1】:

如果您使用的是 Postgresql,则语法会略有不同。

ALTER TABLE <table_name> DROP CONSTRAINT <table_name>_pkey;

【讨论】:

    【解决方案2】:

    您可以在迁移中执行任意 SQL:

    execute "ALTER TABLE `products` DROP PRIMARY KEY"
    

    然后添加新列:

    add_column :products, :id, :primary_key
    

    见:

    Remove Primary Key in MySQL

    how to add a primary key to a table in rails

    http://thinkwhere.wordpress.com/2009/05/09/adding-a-primary-key-id-to-table-in-rails/

    http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 2011-02-17
      相关资源
      最近更新 更多