Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Web2py – Migration von SQLite zu MySQL

Ich musste kürzlich eine web2py-basierte CRM-App, die auf einem Apache-Server mit einem SQLite-Backend gehostet wird, in MySQL konvertieren. Unten sind die Schritte, die für mich funktioniert haben. Ich habe eine Beispielanwendung erstellt, mit der Sie arbeiten können. Sie können alle Dateien hier herunterladen.

Bitte beachten Sie:Ich verwende web2py Version 2.4.7 in einer Unix-Umgebung. Bevor Sie beginnen, stellen Sie sicher, dass SQLite auf Ihrem System installiert ist. Sie können dies mit pip installieren, pip install sqlite , oder Sie können die Binärdateien unter http://sqlite.org/download.html herunterladen. Außerdem muss MySQL installiert sein. Wenn Sie Hilfe benötigen, folgen Sie den Tutorials hier.

Die aktuelle Datenbank enthält alle standardmäßigen web2py-Tabellen sowie users Tabelle mit den Feldern id , start_date und end_date :

db.define_table(
    'users',
    Field('start_date','string'), 
    Field('end_date','string')
)

Dieser Code folgt der web2py DAL-Syntax. Die Tabelle enthält 30.000 Datenzeilen.


Datenbereinigung

Laden Sie die neueste SQLite-Datenbank Ihrer Anwendung herunter. Standardmäßig ist dies die Datei mit dem Namen storage.sqlite im Ordner „/web2py/applications//databases/“. Erstellen Sie zum Herunterladen einen Datenbank-Dump, indem Sie den folgenden Befehl im Terminal ausführen:

$ sqlite3 storage.sqlite .dump > output_before.sql

Bearbeiten Sie mit einem Texteditor die Datei output_before.sql Datei:

  • Entfernen Sie alle Zeilen, die mit PRAGMA beginnen , BEGIN TRANSACTION , CREATE TABLE und COMMIT .
  • Entfernen Sie alle Zeilen, die sich auf sqlite_sequence beziehen Tabelle (d.h. DELETE FROM sqlite_sequence; ).
  • Für alle INSERT INTO "<table_name>" VALUES(...) Anweisungen, ersetzen Sie die doppelten Anführungszeichen (" " ) vor und nach <table_name> mit Backticks (` ` ) - z.B. INSERT INTO `table_name` VALUES(...) .

Speichern Sie die Datei schließlich als output_after.sql auf Ihrem Desktop.



MySQL-Setup

Erstellen Sie die MySQL-Datenbank auf dem Remote-Server. Notieren Sie sich den Datenbanknamen, den Benutzernamen und das Passwort. Sie können Ihre Datenbank auch lokal zum Testen einrichten, was ich für dieses Tutorial verwenden werde:

$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;

Konfigurieren Sie Ihre Anwendung für die Verwendung von MySQL. Starten Sie Ihren web2py-Admin. Bearbeiten Sie db.py :

db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')

Speichern Sie die Datei.

Web2py erlauben, die MySQL-Datenbank zu initialisieren:

  • Sichern Sie den Inhalt von /web2py/applications/<your_application>/databases/ Mappe. Löschen Sie dann den Inhalt des Ordners.
  • Zurück zum web2py-Admin. Klicken Sie auf die Schaltfläche „Datenbankverwaltung“, um die Tabellen in Ihrer lokalen MySQL-Datenbank zu erstellen.

Starten Sie Ihre MySQL-Datenbank im Terminal, um zu überprüfen, ob die leeren Tabellen zur Datenbank hinzugefügt wurden:



Daten hinzufügen

Navigieren Sie zu dem Speicherort, an dem Sie output.sql gespeichert haben (sollte Ihr Desktop sein) und führen Sie dann den folgenden Befehl aus, um Daten zu MySQL hinzuzufügen:

$ mysql -u root migration < output_after.sql

Die vollständige Ausführung dauert einige Minuten.

Überprüfen Sie im web2py-Adminbereich Ihre Datenbank und Anwendung, um sicherzustellen, dass auf die neuen Daten zugegriffen werden kann.