sql >> Base de Datos >  >> RDS >> Mysql

Web2py – Migración de SQLite a MySQL

Hace poco necesitaba convertir una aplicación de CRM basada en web2py alojada en un servidor Apache con un servidor SQLite a MySQL. A continuación se muestran los pasos que funcionaron para mí. Creé una aplicación de muestra con la que trabajar. Si desea seguirnos, puede descargar todos los archivos aquí.

Tenga en cuenta:estoy usando la versión 2.4.7 de web2py en un entorno Unix. Antes de comenzar, asegúrese de tener SQLite instalado en su sistema. Puede instalar esto con pip, pip install sqlite , o puede obtener los archivos binarios en http://sqlite.org/download.html. También necesita MySQL instalado. Si necesita ayuda, siga los tutoriales aquí.

La base de datos actual tiene todas las tablas web2py predeterminadas, así como un usuarios tabla con los campos id , fecha_de_inicio y fecha_finalización :

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

Este código sigue la sintaxis DAL de web2py. Hay 30.000 filas de datos en la tabla.


Limpieza de datos

Descargue la base de datos SQLite más reciente de su aplicación. Por defecto, es el archivo llamado storage.sqlite en la carpeta “/web2py/applications//databases/”. Para descargar, cree un volcado de base de datos ejecutando el siguiente comando dentro de la terminal:

$ sqlite3 storage.sqlite .dump > output_before.sql

Usando un editor de texto, edite el output_before.sql archivo:

  • Eliminar todas las líneas que comienzan con PRAGMA , BEGIN TRANSACTION , CREATE TABLE y COMMIT .
  • Eliminar todas las líneas pertenecientes a sqlite_sequence tabla (es decir, DELETE FROM sqlite_sequence; ).
  • Para todos INSERT INTO "<table_name>" VALUES(...) declaraciones, reemplace las comillas dobles (" " ) antes y después del <table_name> con acentos graves (` ` ) - p.ej. INSERT INTO `table_name` VALUES(...) .

Finalmente, guarde el archivo como output_after.sql en tu escritorio.



Configuración de MySQL

Cree la base de datos MySQL en el servidor remoto. Tome nota del nombre de la base de datos, el nombre de usuario y la contraseña. También puede configurar su base de datos localmente para realizar pruebas, que usaré para este tutorial:

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

Configura tu aplicación para usar MySQL. Inicie su administrador de web2py. Editar db.py :

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

Guarde el archivo.

Permita que web2py inicialice la base de datos MySQL:

  • Copia de seguridad del contenido de /web2py/applications/<your_application>/databases/ carpeta. Luego elimine el contenido de la carpeta.
  • De vuelta en el administrador de web2py. Haga clic en el botón "administración de la base de datos" para crear las tablas en su base de datos MySQL local.

Inicie su base de datos MySQL en la terminal para asegurarse de que las tablas vacías se agregaron a la base de datos:



Añadir datos

Navegue hasta donde guardó output.sql (debería ser su escritorio), luego ejecute el siguiente comando para agregar datos a MySQL:

$ mysql -u root migration < output_after.sql

Esto tardará unos minutos en ejecutarse por completo.

Dentro del administrador de web2py, verifique su base de datos y aplicación para asegurarse de que se pueda acceder a los nuevos datos.