Ich möchte eine Migration, um einen Klon einer vorhandenen Tabelle zu erstellen, indem Sie einfach den Namen, einschließlich aller Indizes aus der ursprünglichen Tabelle.Wie könnten Sie eine Datenbanktabelle über die Rails-Migration klonen?
Also gibt es eine "Snapshots" -Tabelle und ich möchte "snapshots_temp" als eine exakte Kopie der Tabelle erstellen (nicht die Daten, nur das Tabellenschema, sondern einschließlich der Indizes).
Ich könnte einfach kopieren und fügen Sie den Block aus der schema.rb-Datei und manuell umbenennen.
Aber ich bin nicht sicher, wenn diese Migration angewendet wird, wenn die Definition aus schema.rb immer noch korrekt ist. Ein anderer Entwickler hat die Tabelle möglicherweise geändert, und ich möchte mein Migrationsskript nicht aktualisieren müssen.
Also, wie bekomme ich das Schema der Tabelle zur Laufzeit? Im Wesentlichen, wie "Rake Schema: Dump" Reverse Engineering der Tabelle, so kann ich das gleiche in meiner Migration tun? (aber den Tabellennamen ändern).
Guter Anruf. "Verwenden Sie LIKE, um eine leere Tabelle zu erstellen, die auf der Definition einer anderen Tabelle basiert, einschließlich aller in der ursprünglichen Tabelle definierten Spaltenattribute und Indizes" http://dev.mysql.com/doc/refman/5.1/en/create-table. html –
Funktioniert mit MySQL (und möglicherweise die meisten Datenbanken), aber wenn Sie Sqlite verwenden, wird es nicht funktionieren. Ich bin auf dieses Problem in der Entwicklungsumgebung gestoßen. Die Produktion ist gut (es ist MySQL). – MiniQuark
Super danke. Beachten Sie, dass Ihre kopierte Tabelle die Indizes, aber keine Fremdschlüssel erhält. Sie müssen diese separat erstellen. –