Niedawno musiałem przekonwertować aplikację CRM opartą na web2py hostowaną na serwerze Apache z zapleczem SQLite na MySQL. Poniżej znajdują się kroki, które zadziałały dla mnie. Stworzyłem przykładową aplikację do pracy, jeśli chcesz kontynuować, możesz pobrać wszystkie pliki tutaj.
Uwaga:używam web2py w wersji 2.4.7 w środowisku Unix. Przed rozpoczęciem upewnij się, że masz zainstalowany program SQLite w swoim systemie. Możesz zainstalować to za pomocą pip, pip install sqlite
, lub możesz pobrać pliki binarne ze strony http://sqlite.org/download.html. Potrzebujesz również zainstalowanego MySQL. Jeśli potrzebujesz pomocy, skorzystaj z samouczków tutaj.
Aktualna baza danych zawiera wszystkie domyślne tabele web2py, a także users tabela z polami id , data_początkowa i data_końcowa :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Ten kod jest zgodny ze składnią web2py DAL. W tabeli znajduje się 30 000 wierszy danych.
Czyszczenie danych
Pobierz najnowszą bazę danych SQLite aplikacji. Domyślnie jest to plik o nazwie storage.sqlite w folderze „/web2py/applications/
$ sqlite3 storage.sqlite .dump > output_before.sql
Za pomocą edytora tekstu edytuj plik output_before.sql plik:
- Usuń wszystkie wiersze zaczynające się od
PRAGMA
,BEGIN TRANSACTION
,CREATE TABLE
iCOMMIT
. - Usuń wszystkie wiersze dotyczące
sqlite_sequence
tabela (np.DELETE FROM sqlite_sequence;
). - Dla wszystkich
INSERT INTO "<table_name>" VALUES(...)
oświadczenia, zastąp podwójne cudzysłowy (" "
) przed i po<table_name>
z backtickami (` `
) - np.INSERT INTO `table_name` VALUES(...)
.
Na koniec zapisz plik jako output_after.sql na pulpicie.
Konfiguracja MySQL
Utwórz bazę danych MySQL na zdalnym serwerze. Zanotuj nazwę bazy danych, nazwę użytkownika i hasło. Możesz także skonfigurować swoją bazę danych lokalnie do testowania, której będę używał w tym samouczku:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Skonfiguruj swoją aplikację do korzystania z MySQL. Uruchom administratora web2py. Edytuj db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Zapisz plik.
Zezwól web2py na inicjalizację bazy danych MySQL:
- Utwórz kopię zapasową zawartości
/web2py/applications/<your_application>/databases/
teczka. Następnie usuń zawartość folderu. - Powrót do administratora web2py. Kliknij przycisk „Administracja bazą danych”, aby utworzyć tabele w lokalnej bazie danych MySQL.
Uruchom bazę danych MySQL w terminalu, aby sprawdzić, czy puste tabele zostały dodane do bazy danych:
Dodaj dane
Przejdź do miejsca, w którym zapisałeś output.sql (powinien to być Twój pulpit), a następnie uruchom następujące polecenie, aby dodać dane do MySQL:
$ mysql -u root migration < output_after.sql
Pełne wykonanie zajmie kilka minut.
W panelu administracyjnym web2py sprawdź swoją bazę danych i aplikację, aby upewnić się, że nowe dane są dostępne.