Ein typisches Verfahren zum Hinzufügen von Spalten und zum Ändern von Spaltennamen und Datentypen ist
1 ⃣ Überprüfen Sie den aktuellen Status mit `` `Rails db: migrate: status 2 ⃣ Geben Sie einen Befehl zum Erstellen oder Hinzufügen einer Migrationsdatei zum Terminal ein (der Befehl unterscheidet sich je nach dem Vorgang, den Sie ausführen möchten). 3 ⃣ Beschreiben Sie die Änderungen in der Migrationsdatei (überprüfen Sie bei Hinzufügung nur den Inhalt). 4⃣
rails db:migrate```
Ich denke (es tut mir leid, wenn es anders ist). Natürlich denke ich, dass dies auch die richtige Antwort ist. (Ich benutze auch Rails db: rollback) Ich denke, dass die Tabelle jedes Mal, wenn ich den Befehl überprüfe oder einen Tippfehler mache, auf mysteriöse Weise verschwindet ...
1 ⃣ `Rails db: migrate: status```, um den aktuellen Status zu überprüfen (wenn es kein Problem gibt, gehen Sie zu 2 ⃣) 2 ⃣ Schreiben Sie den Teil der Migrationsdatei, den Sie bereits erstellt haben und den Sie ändern möchten, direkt neu (bitte hinzufügen, wenn Sie ihn hinzufügen möchten). 3 ⃣ Führen Sie
`Rails db: migrate: reset``` aus, um den Vorgang abzuschließen
Schauen Sie sich schema.rb an!
rails db:migrate:Durch Zurücksetzen der vorhandenen Migrationsdatei**Nutze alles**Und erstellen Sie die Tabelle neu. Daher werden alle umgeschriebenen und hinzugefügten Teile wiedergegeben.(Selbst wenn ein Fehler aufgrund eines Tippfehlers auftritt, wird er größtenteils behoben.)
Wenn Sie den Datensatz jedoch nicht löschen möchten, müssen Sie ihn je nach Fall ordnungsgemäß verwenden. Geben Sie den Befehl daher sorgfältig ein.
## Beispiel
#### 1 ⃣ Statusprüfung
#### **`rails db:migrate:Statusausführung`**
Es gibt so viele Migrationsdateien wie die Menge, die ausgegeben wird, wenn der Befehl ausgeführt wird, und das Image wird so aussehen, als würden sie alle im nachfolgenden Prozess auf einmal neu erstellt.
Terminal
vocstartsoft:~/environment/bookers2-task (master) $ rails db:migrate:status #Lauf hier
database: /home/ec2-user/environment/bookers2-task/db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20200830060820 Devise create users #Der Staat wird herauskommen, ob er oben oder unten ist.
up 20200830062142 Create books #up ist grundsätzlich migriert
up 20201101080413 Create book comments
#Unten weggelassen
Bringen Sie die Migrationsdatei mit den Inhalten, die Sie hinzufügen / ändern möchten, aus dem Ordner ** db / migrate **. Dieses Mal haben sowohl die ** Titelspalte ** als auch die ** Körperspalte **, die zum Posten verwendet werden, falsche Datentypen, daher werde ich das beheben (was für ein Fehler ist boolesch?)
db/migrate/20201115102020_create_books.rb
class CreateBooks < ActiveRecord::Migration[5.2]
def change
create_table :books do |t|
t.integer :title #← Ich möchte eine Ganzzahl auf einen String setzen
t.boolean :body #← Ich möchte den Booleschen Wert in Text ändern
t.integer :user_id
t.timestamps
end
end
end
Umschreiben (bitte hinzufügen, wenn Sie hinzufügen möchten)
db/migrate/20201115102020_create_books.rb
#↑ weggelassen
t.string :title #integer→string
t.text :body #boolean→text
#↓ weggelassen
Terminal
$ rails db:migrate:reset
Wenn das Terminal den gleichen Inhalt wie die üblichen Rails db: migrate ausgibt, gibt es wahrscheinlich kein Problem. Lassen Sie uns schema.rb überprüfen und prüfen, ob es ordnungsgemäß geändert / hinzugefügt wurde. Es scheint mühsam zu sein, aber bitte beachten Sie, dass die von Ihnen erstellten Benutzerinformationen (Name usw.) und geposteten Inhalte verschwunden sein sollten.
Beide Befehle sind Befehle, die die Datenbank löschen und neu erstellen, aber es scheint einen großen Unterschied zu geben.
rails db:Beim Zurücksetzen werden die Datenbank und das aktuelle Schema gelöscht.Laden Sie rb und erstellen Sie die DB neu. db/migrate/~.rb scheint nicht verwendet zu werden.
#### **`rails db:migrate:Zurücksetzen ist eine normale Migration (db) nach dem Löschen der Datenbank:migrieren) wird durchgeführt. Das heißt, db/migrate/~.Alle RBS werden vom ältesten zum neuesten ausgeführt.`**
Schließlich andere als die oben genannten Methoden [Klicken Sie hier für Artikel zum Hinzufügen von Spalten] (https://qiita.com/jackie0922youhei/items/09a7b081e40506f07358) Es war hilfreich und im Gegenteil: [Klicken Sie hier, um einen Artikel über den Inhalt zu lesen, wenn Rails db: migrate: reset nicht durchgeführt werden konnte.] (https://qiita.com/mom0tomo/items/a252ff8a42eea00f81b1) Es ist lange her, aber ich persönlich habe das Gefühl, dass es in der DB viele komplizierte Fehler gibt. Ich bin froh, wenn dieser Artikel das Problem löst! (Es tut mir leid, wenn es sich nicht verbessert ...)
Recommended Posts