2015-11-25 6 views
5

In einem unserer Felder muss die Groß-/Kleinschreibung beachtet werden. Wir können eine Migration schreiben, um die Kollatierung zu ändern, die gut funktioniert, aber diese Änderung spiegelt sich nicht in schema.rb wider. Dies führt beispielsweise beim Ausführen von Tests zu Problemen, und die geklonte Testdatenbank enthält nicht die Sortierung, die wir für dieses Feld wünschen.Wie machen Sie Rake db: Schema: Dump haben die Zeichensatz und Kollation der Felder in schema.rb?

Wir verwenden mysql.

Ich habe nach einer Möglichkeit gesucht dies ohne Ergebnisse möglich zu machen ..

ich es geschafft, diese auf Github zu finden, aber nicht sicher, wie diese https://github.com/cantino/huginn/blob/db792cdd82eb782e98d934995964809d9e8cb77d/db/schema.rb

+0

Haben Sie versucht, mit structure.sql anstelle von schema.rb? http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you ändern: 'config.active_record.schema_format =: sql' in application.rb und dann müssen Sie' Rake db: structure: load verwenden 'anstelle von' db: schema: load' - nicht sicher, ob die Kollatierung beibehalten wird oder nicht – house9

Antwort

3

denken erreicht wurde ich dort keine „offizielle“ ist Weg (von Rails oder ActiveRecord Gems zur Verfügung gestellt), um diese Art von Dump zu erreichen. Nach dem git-Verlauf finden Sie unter dem Huginn Repo selbst den Code, den Sie benötigen, um diesen Speicherauszug zu erreichen. Werfen Sie einen Blick auf diese begehen: https://github.com/cantino/huginn/commit/db792cdd82eb782e98d934995964809d9e8cb77d

Der relevanteste Code ist hier: https://github.com/cantino/huginn/blob/master/lib/ar_mysql_column_charset/main.rb

Also, wenn Sie diese Funktion benötigen, müssen Sie wahrscheinlich kopieren/einfügen diese Erweiterung in Ihr Projekt.

UPDATE

Ich habe eine tiefere Überprüfung von Huginn Repo (git Geschichte und Ausgaben), und wie Sie in diesen comment wurde diese Funktionalität in ein Juwel extrahiert zu lesen: https://github.com/kamipo/activerecord-mysql-awesome.

1

Wie im @ house9-Kommentar erwähnt, können Sie stattdessen structure.sql verwenden. Fügen Sie diese auf Ihr Projekt application.rb:

config.active_record.schema_format = :sql 

Dann bundle exec rake db:structure:dump laufen die tatsächliche SQL-Struktur zu erzeugen. Dadurch bleiben Zeichensätze und Sortierfolgen erhalten (die idealerweise in schema.rb vorhanden sein sollten, aber leider).

"Struktur" ist von Natur aus weniger portabel als "Schema", aber es ist normalerweise eine gute Sache für alle Teammitglieder und Umgebungen, die gleiche Datenbank und Version trotzdem zu verwenden.

Verwandte Themen