2015-12-26 2 views
-1

У меня есть сайт с рельсами с множеством моделей и таблиц базы данных. Из всего этого я хочу изменить столбец первичного ключа: id в bigint вместо int, поскольку он собирается пересечь предел integer int (11) в MySQL.Рельсы - изменение числа символов в байтах MySQL auto

Я не хочу использовать методы, предложенные в других сообщениях, где они предлагают нам: id => false при создании таблицы и добавлении настраиваемого столбца: идентификатор, определяющий размер.

У меня уже есть много данных, и я не хочу, чтобы идентификаторы столбца id также менялись, поскольку я использую его для некоторых отношений has_many belongs_to и могу разорвать все ссылки.

Пожалуйста, укажите, как я могу change_column идентификатор из междунар (11) к BigInt без воссоздания таблицы и/или потерю данных и идентификатор значения

ответ

1

Дайте это попробовать

сделать миграцию, что выглядит следующим образом:

class NameOfYourMigration < ActiveRecord::Migration 

    def up 
     change_column :table_name, :id, :integer, limit: 8 # <-- makes the column type bigint 
    end 

    def down 
     change_column :table_name, :id, :integer 
    end 

end 
5

Не забудьте указать auto_increment: true.

class NameOfYourMigration < ActiveRecord::Migration 
    def up 
    change_column :table_name, :id, :integer, limit: 8, auto_increment: true 
    end 

    def down 
    change_column :table_name, :id, :integer, auto_increment: true 
    end 
end 
+2

забывание 'auto_increment' = мир боли. –

Смежные вопросы