Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Web2py – migracja z SQLite do MySQL

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//bazy danych/”. Aby pobrać, utwórz zrzut bazy danych, uruchamiając w terminalu następujące polecenie:

$ 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 i COMMIT .
  • 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać ostatni dzień miesiąca w MySQL?

  2. Zainstaluj Mtop (monitorowanie serwera bazy danych MySQL) w RHEL/CentOS 6/5/4, Fedora 17-12

  3. PHP, MySQL i strefy czasowe

  4. Częste pytania i odpowiedzi dotyczące wywiadu MySQL dla nowszych i doświadczonych

  5. Jak wyeksportować bazę danych mysql za pomocą wiersza polecenia?