sql >> Database teknologi >  >> RDS >> Mysql

Web2py – Migrering fra SQLite til MySQL

Jeg havde for nylig brug for at konvertere en web2py-baseret CRM-app hostet på en Apache-server med en SQLite-backend til MySQL. Nedenfor er de trin, der virkede for mig. Jeg har oprettet et eksempelprogram til at arbejde med, hvis du gerne vil følge med, du kan downloade alle filer her.

Bemærk venligst:Jeg bruger web2py version 2.4.7 i et Unix-miljø. Før du starter, skal du sørge for, at du har SQLite installeret på dit system. Du kan installere dette med pip, pip install sqlite , eller du kan få fat i de binære filer på http://sqlite.org/download.html. Du skal også have MySQL installeret. Hvis du har brug for hjælp, så følg selvstudierne her.

Den aktuelle database har alle standard web2py-tabeller samt en bruger tabel med felterne id , startdato og slutdato :

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

Denne kode følger web2py DAL-syntaksen. Der er 30.000 rækker med data i tabellen.


Datarensning

Download din applikations seneste SQLite-database. Som standard er det filen med navnet storage.sqlite under mappen "/web2py/applications//databaser/". For at downloade skal du oprette en databasedump ved at køre følgende kommando i terminalen:

$ sqlite3 storage.sqlite .dump > output_before.sql

Brug en teksteditor til at redigere output_before.sql fil:

  • Fjern alle linjer, der starter med PRAGMA , BEGIN TRANSACTION , CREATE TABLE og COMMIT .
  • Fjern alle linjer, der vedrører sqlite_sequence tabel (dvs. DELETE FROM sqlite_sequence; ).
  • For alle INSERT INTO "<table_name>" VALUES(...) udsagn, skal du erstatte de dobbelte anførselstegn (" " ) før og efter <table_name> med backticks (` ` ) - for eksempel. INSERT INTO `table_name` VALUES(...) .

Gem endelig filen som output_after.sql på dit skrivebord.



MySQL-opsætning

Opret MySQL-databasen på fjernserveren. Noter databasenavnet, brugernavnet og adgangskoden. Du kan også opsætte din database lokalt til test, som jeg vil bruge til denne øvelse:

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

Konfigurer din applikation til at bruge MySQL. Start din web2py-administrator. Rediger db.py :

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

Gem filen.

Tillad web2py at initialisere MySQL-databasen:

  • Sikkerhedskopier indholdet af /web2py/applications/<your_application>/databases/ folder. Slet derefter indholdet af mappen.
  • Tilbage på web2py-administratoren. Klik på knappen "databaseadministration" for at oprette tabellerne i din lokale MySQL-database.

Tænd din MySQL-database i terminalen for at kontrollere, om de tomme tabeller blev tilføjet til databasen:



Tilføj data

Naviger til det sted, hvor du gemte output.sql (skal være dit skrivebord), og kør derefter følgende kommando for at tilføje data til MySQL:

$ mysql -u root migration < output_after.sql

Dette vil tage et par minutter at udføre fuldstændigt.

I web2py-administratoren skal du tjekke din database og applikation for at sikre, at de nye data er tilgængelige.



  1. SSMS version 18 – ingen databasediagrammer

  2. Hvordan erstatter man et regulært udtryk i MySQL?

  3. Få antallet af dage mellem to datoer i Oracle, inklusive datoerne

  4. Sådan:Opret trigger for automatisk opdaterings ændret dato med SQL Server 2008