Ich möchte unter Rails 3 ein bigint
(oder string
oder was auch immer nicht int
) eingegebenes Primärschlüsselfeld erstellen.
Ich habe eine bestimmte Struktur von Daten, zum Beispiel:
%Vor%Der Ansatz, den ich gerade versuche zu pushen:
%Vor%Der Spaltentyp ist korrekt, aber die Primärschlüsseloption ist nicht bei sqlite3 vorhanden und ich vermute, dass dies auch bei MySQL der Fall ist.
Hatte das selbst nicht lange her und fand die Antwort hier: Wie kann ich meinen Primärschlüssel mithilfe von Rails so einstellen, dass er keine Spalte mit ganzen Zahlen ist?
Sie müssen primary_key: false setzen und dann eine benutzerdefinierte Anweisung verwenden, bevor Sie die Migration ausführen.
BEARBEITEN 1: Sie müssen Ihre Datenbankdokumente überprüfen, damit die genaue Abfrage ausgeführt werden kann. Es wird als reguläre SQL-Anweisung ausgeführt und muss datenbankspezifisch sein. Das Beispiel in der Frage, auf die ich Bezug genommen habe, ist für Postgre SQL. Wenn Sie MySQL verwenden, müssen Sie dies möglicherweise ändern.
Ich hatte das gleiche Problem. Ich denke, der einfachste Weg für einen Tisch
ist
%Vor% Die Antwort von skalogirou ist gut, aber die Änderung wird sich nicht in schema.rb widerspiegeln. Daher werden die Aufgaben wie db:schema:load
und db:test:clone
keine identische DB-Struktur erzeugen.
Die erforderliche Problemumgehung besteht darin, db:schema:load
und db: test: clone Rake-Aufgaben wie hier beschrieben zu verbessern:
Ссылка
Dies ist, was ich basierend auf dieser Problemumgehung verwendet habe:
%Vor%Tags und Links ruby-on-rails-3 ruby-on-rails primary-key bigint