Crear tablas innoDB desde CodeIgniter

Para crear tablas en una base de datos con codeIgniter se puede usar la clase dbforge. Para ello simplemente hay que cargarla en el modelo donde vayamos a llevar a cabo dichas tareas.

$this->load->dbforge();

La manera de hacerlo es muy sencillo y aquí (http://codeigniter.com/user_guide/database/forge.html) podéis ver la documentación.

Ahora bien, la tabla que se crea por defecto es MyISAM y no nos da opción a cambiarla a InnoDB (siendo esto un inconveniente para crear relaciones entre tablas o para crear largas transacciones con Active Record).

Esto lo he solucionado en 4 pasos:

- En /config/database.php he añadido una nueva variable donde guardaré el motor, en este caso:

$db[‘default’][‘dbengine’] = “InnoDB”; 

- Nos fijamos en el valor $db[‘default’][‘dbdriver’] que tengamos definida, en mi caso ‘mysqli’.

- En /system/database/drivers/ {dbdriver} / {dbdriver}_forge.php

- En la función _create_table, concatenamos los cambios al final de la cadena $sql:

$sql .= “\n) ENGINE = {$this->db->dbengine} CHARACTER SET {$this->db->char_set} COLLATE {$this->db->dbcollat};”;

Listo. A partir de ahora, las tablas se crearán en base al motor elegido, pero ojo, siempre que se defina ‘mysqli’ como dbdriver, o realizando los 3 últimos pasos con cada una de las posibilidades que nos brinda CodeIgniter (mssql, mysql, mysqli, oci8, odbc, postgre, sqlite).

  1. rafaparadela ha publicado esto
blog comments powered by Disqus