sql >> Databáze >  >> RDS >> Mysql

Web2py – Migrace z SQLite na MySQL

Nedávno jsem potřeboval převést aplikaci CRM založenou na web2py hostovanou na serveru Apache s SQLite backendem na MySQL. Níže jsou uvedeny kroky, které pro mě fungovaly. Vytvořil jsem vzorovou aplikaci, se kterou můžete pracovat, pokud ji chcete sledovat, všechny soubory si můžete stáhnout zde.

Poznámka:Používám web2py verze 2.4.7 v prostředí Unix. Před spuštěním se ujistěte, že máte v systému nainstalovaný SQLite. Můžete to nainstalovat pomocí pip, pip install sqlite , nebo si můžete binární soubory stáhnout na http://sqlite.org/download.html. Musíte mít také nainstalované MySQL. Pokud potřebujete pomoc, postupujte podle výukových programů zde.

Aktuální databáze obsahuje všechny výchozí web2py tabulky a také uživatele tabulka s poli id , počáteční_datum a end_date :

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

Tento kód se řídí syntaxí web2py DAL. V tabulce je 30 000 řádků dat.


Čištění dat

Stáhněte si nejnovější databázi SQLite vaší aplikace. Ve výchozím nastavení je to soubor s názvem storage.sqlite ve složce „/web2py/applications//databases/“. Chcete-li stáhnout, vytvořte výpis databáze spuštěním následujícího příkazu v terminálu:

$ sqlite3 storage.sqlite .dump > output_before.sql

Pomocí textového editoru upravte output_before.sql soubor:

  • Odstraňte všechny řádky, které začínají PRAGMA , BEGIN TRANSACTION , CREATE TABLE a COMMIT .
  • Odstraňte všechny řádky týkající se sqlite_sequence tabulka (tj. DELETE FROM sqlite_sequence; ).
  • Pro všechny INSERT INTO "<table_name>" VALUES(...) příkazy, nahraďte dvojité uvozovky (" " ) před a za <table_name> se zpětným zaškrtnutím (` ` ) - např. INSERT INTO `table_name` VALUES(...) .

Nakonec soubor uložte jako output_after.sql na ploše.



Nastavení MySQL

Vytvořte databázi MySQL na vzdáleném serveru. Poznamenejte si název databáze, uživatelské jméno a heslo. Můžete také lokálně nastavit svou databázi pro testování, kterou budu používat pro tento tutoriál:

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

Nakonfigurujte svou aplikaci tak, aby používala MySQL. Spusťte svého správce web2py. Upravte db.py :

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

Uložte soubor.

Povolit web2py inicializovat databázi MySQL:

  • Zálohujte obsah /web2py/applications/<your_application>/databases/ složka. Poté smažte obsah složky.
  • Zpět na web2py admin. Kliknutím na tlačítko „správa databáze“ vytvoříte tabulky ve vaší místní databázi MySQL.

Spusťte databázi MySQL v terminálu a zkontrolujte, zda byly do databáze přidány prázdné tabulky:



Přidat data

Přejděte na místo, kam jste uložili output.sql (měl by to být váš desktop), poté spusťte následující příkaz pro přidání dat do MySQL:

$ mysql -u root migration < output_after.sql

Úplné provedení bude trvat několik minut.

V rámci správce web2py zkontrolujte databázi a aplikaci, abyste se ujistili, že jsou nová data dostupná.



  1. Knihovna není načtena:chyba libmysqlclient.16.dylib při pokusu o spuštění „rails serveru“ v OS X 10.6 s gem mysql2

  2. Jak obnovit soubor výpisu PostgreSQL do databází Postgres?

  3. Neo4j - Zrušte omezení pomocí Cypher

  4. Vytvořte jedinečné omezení s prázdnými sloupci