====== Migration von MariaDB zu PostgreSQL in Rails ======
Die nachfolgenden Schritte beschreiben den Wechsel der Datenbank in einem Rails-Projekt von einer MariaDB-Datenbank zu PostgreSQL.
* Zuerst muss der Datenbank-Adapter gewechselt werden. Füge das entsprechende Gem deinem ''Gemfile'' hinzu:
gem 'pg'
* Passe nun die Konfiguration in der ''database.yml'' an:
development: &default_settings
adapter: postgresql
host: localhost
database: database_name
username: username
password: password
encoding: unicode
* Überlichweise hat das Konto zur Ausführung der Rails-Anwendung nicht ausreichend Rechte, um eine Datenbank anzulegen. Insofern muss dies manuell erfolgen:
su - postgres
psql
create user database_user with password 'secret1234';
create database database_name encoding 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER database_user;
* Lade nun das Rails-Datenbankschema:
rails db:schema:load
* Erstelle ein Dump der MariaDB-Datenbank:
mysqldump -u username -p database_name > database_name.sql
* Installiere [[https://github.com/dimitri/pgloader|pgloader]]:
apt install pgloader
* Erstelle eine Migrationsdatei - zum Beispiel: ''migration.load'':
-- Angabe der Datenbankverbindungen
LOAD DATABASE
FROM mysql://database_:user:database_password@localhost/database_name
INTO postgresql://database_user:database_password@localhost/database_name
-- Nur Daten und kein Schema importieren
-- Vorhandene Tabellen leeren
WITH data only, truncate
-- Umbenennen des Schemas
ALTER SCHEMA 'database_name' RENAME TO 'public';
* Führe nun ''pgloader'' aus:
pgloader --verbose migration.load
* Nach erfolgreichen Durchlauf von ''pgloader'' ist die Migration abgeschlossen. Du kannst deine Rails-Anwendung nun starten.
----
====== Links ======
* https://hlcfan.github.io/migrate-from-mysql-to-postgresql-rails.html
* https://gist.github.com/tristanm/a2afa29ac6f37bf92b46