2008-11-23 9 views
2

Depuis Rails 2.1, si vous définissez une nouvelle colonne dans une migration avec le type défini sur: integer et que: limit est défini sur 5 ou plus, la colonne réellement créée dans votre base de données MySQL sera de type BigInt. C'est parfait.Comment puis-je définir une clé primaire BigInt avec Rails 2.1 et MySQL?

Mais je n'arrive pas à comprendre comment créer une table avec une clé primaire BigInt.

Des indices?

+0

Définition de la colonne: limite plus de 5 semble ne pas fonctionner dans mes Rails 2.3.9 app. Des idées où le problème pourrait être? –

Répondre

1

Cela fonctionne dans des rails 3 ne sais pas si cela fonctionnerait dans des rails 2.

Tout au long de mon application, je besoin de mes clés primaires pour être bigint non signé. Ce que je fini par faire était de mettre dans ma config/environment.rb

require 'active_record/connection_adapters/mysql2_adapter' 
ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES[:primary_key] = 
    "BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY".freeze 

Cela permet de créer automatiquement des rails ids comme bigints. Quand je fais une refrence d'une autre table, je fais ce qui suit

t.column :product_id, 'BIGINT UNSIGNED' 
Questions connexes