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å http://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 TABLE
ochCOMMIT
. - Ta bort alla rader som hänför sig till
sqlite_sequence
tabell (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.