rails3 bigint Primärschlüssel

8

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.

    
Notinlist 04.05.2011, 07:46
quelle

5 Antworten

3

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.

    
mhenrixon 04.05.2011, 08:38
quelle
4

Ich hatte das gleiche Problem. Ich denke, der einfachste Weg für einen Tisch

%Vor%

ist

%Vor%     
skalogirou 20.09.2012 14:27
quelle
3

Für MySQL können Sie "SERIAL" verwenden, was ein Alias ​​für "BIGINT UNSIGNED NOT NULL AUTO_INCREMENT"

ist %Vor%     
Maxim 30.09.2013 17:40
quelle
0

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%     
trnecka 08.01.2015 13:51
quelle
0

Wenn Sie alle Tabellen in Postgres konvertieren möchten, müssen Sie diesen Code ausführen

%Vor%     
I0Result 17.01.2018 13:34
quelle