Jag behövde nyligen konvertera en web2py-baserad CRM-app på en Apache-server med en SQLite-backend till MySQL. Nedan är stegen som fungerade för mig. Jag skapade en exempelapplikation att arbeta med om du vill följa med, du kan ladda ner alla filer här.
Observera:Jag använder web2py version 2.4.7 i en Unix-miljö. Innan du börjar, se till att du har SQLite installerat på ditt system. Du kan installera detta med pip,
pip install sqlite, eller så kan du hämta de binära filerna på https://sqlite.org/download.html. Du behöver också MySQL installerat. Om du behöver hjälp, följ handledningarna här.
Den aktuella databasen har alla standardweb2py-tabeller samt en användare tabell med fälten id , startdatum och slutdatum :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Denna kod följer web2py DAL-syntaxen. Det finns 30 000 rader med data i tabellen.
Datarensning
Ladda ner din applikations senaste SQLite-databas. Som standard är det filen som heter storage.sqlite under mappen "/web2py/applications/
$ sqlite3 storage.sqlite .dump > output_before.sql
Använd en textredigerare och redigera output_before.sql fil:
- Ta bort alla rader som börjar med
PRAGMA,BEGIN TRANSACTION,CREATE TABLEochCOMMIT. - Ta bort alla rader som hänför sig till
sqlite_sequencetabell (dvs.DELETE FROM sqlite_sequence;). - För alla
INSERT INTO "<table_name>" VALUES(...)satser, ersätt de dubbla citattecken (" ") före och efter<table_name>med backticks (` `) - t.ex.INSERT INTO `table_name` VALUES(...).
Slutligen, spara filen som output_after.sql på skrivbordet.
MySQL-inställningar
Skapa MySQL-databasen på fjärrservern. Notera databasens namn, användarnamn och lösenord. Du kan också ställa in din databas lokalt för testning, som jag kommer att använda för denna handledning:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Konfigurera din applikation för att använda MySQL. Starta din web2py-administratör. Redigera db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Spara filen.
Tillåt web2py att initiera MySQL-databasen:
- Säkerhetskopiera innehållet i
/web2py/applications/<your_application>/databases/mapp. Ta sedan bort innehållet i mappen. - Tillbaka på web2py-administratören. Klicka på knappen "databasadministration" för att skapa tabellerna i din lokala MySQL-databas.
Starta din MySQL-databas i terminalen för att kontrollera att de tomma tabellerna har lagts till i databasen:
Lägg till data
Navigera till där du sparade output.sql (bör vara ditt skrivbord), kör sedan följande kommando för att lägga till data till MySQL:
$ mysql -u root migration < output_after.sql
Detta kommer att ta några minuter att köra helt.
Inom web2py-administratören, kontrollera din databas och applikation för att se till att den nya informationen är tillgänglig.