Ich habe auf dem RPI 4 ein paar Probleme, Rails zu installieren und die richtige Version von MySQL (MariaDB) und ActiveRecord zu finden, während ich eine ältere Version von Rails und eine neuere Version von Sphinx (Suchindex) nutze. Jedenfalls wollte ich schon immer zu PostgreSQL wechseln … jetzt ist der richtige Zeitpunkt dafür.
Das Tool meiner Wahl: PGLoader
Mir ist klar geworden, dass pgloader nicht gerne auf dem RPI läuft, aber die Lösung ist einfach:
SourceDB (Cubietrack) <-> Linux-PC (mein Desktop) = PG-Loader läuft <-> TargetDB (RPI4)
Ich wollte das Schema auf der Ziel-DB so originalgetreu wie möglich für Rails haben, also habe ich rake verwendet:
<br />
rake db:create<br />
rake db:schema:load<br />
um eine originale Rails-DB-Konfiguration zu erhalten. PGLoader wird für die Datenmigration verwendet.
Skript:
<br />
LOAD DATABASE<br />
FROM mysql://export:xxx@ct/CTCD2Server_production<br />
INTO pgsql://docbox:xxx@pi:5432/docbox_production<br />
with data only<br />
ALTER SCHEMA 'CTCD2Server_production' RENAME TO 'public';<br />
Zwei wichtige Punkte:
- Die letzte Anweisung „alter schema“ ist wichtig, da pgloader ein Schema mit dem gleichen Namen wie die Quell-DB erstellt und alle Tabellen in diesem Schema anlegt – und Rails rechnet möglicherweise nicht damit.
- „with data only“ – teilt pgloader mit, dass das Schema bereits vorhanden ist (rake db:schema:load)
Sobald das Skript läuft, ist die Datenmigration nur noch ein „Knopfdruck“.
