¡Evita estos 10 errores comunes al usar CodeIgniter con MariaDB y PostgreSQL juntos!





🚨 ¡Evita estos 10 errores comunes al usar

CodeIgniter con MariaDB y PostgreSQL juntos! 🚨

Descubre cómo salvar tu proyecto de los errores más frecuentes cuando trabajas con estas dos bases de datos en CodeIgniter. Aprende con ejemplos claros y soluciones prácticas que cualquier desarrollador debe conocer.

1. 🔗 Error con JOIN implícito — Usa joins explícitos

MariaDB acepta joins implícitos con comas en la cláusula FROM, pero PostgreSQL es estricto y exige la sintaxis explícita.

SELECT * FROM tabla1, tabla2 WHERE tabla1.id = tabla2.id;

Puede causar fallos o comportamientos inesperados.

La solución: Siempre usa joins explícitos en CodeIgniter:

$this->db->table('tabla1')
    ->join('tabla2', 'tabla1.id = tabla2.id')
    ->get()
    ->getResult();
✅ Esto asegura compatibilidad total y mejora la claridad del código.

2. 🚫 Campos null vacíos que causan errores en PostgreSQL

Insertar un string vacío '' en campos numéricos o bigint genera errores:

ERROR: la sintaxis de entrada no es válida para tipo bigint: «»

MariaDB lo maneja sin problema, pero PostgreSQL no.

Cómo evitarlo: Convierte cadenas vacías a null o un valor válido antes de insertar:

if ($data['campo_num'] === '') {
    $data['campo_num'] = null;
}

3. ⏰ Formatos de fecha y hora incompatibles

Formato como 2025-07-25T16:32 falla en PostgreSQL que espera:

2025-07-25 16:32:00

Convierte las fechas en el controlador solo para PostgreSQL:

$date = str_replace('T', ' ', $inputDate);
Tip: Usa DateTime para mayor precisión:
$dateTime = new DateTime($inputDate);
$formatted = $dateTime->format('Y-m-d H:i:s');

4. 🆔 Alias en mayúsculas/minúsculas y guiones bajos

Evita modificar alias con guiones o cambiar mayúsculas. PostgreSQL los trata de forma estricta.

Ejemplo correcto:

SELECT a.idProveedor AS idProveedor FROM tabla a;

5. ✔️ Validación estricta de campos de fecha y hora

Campos como FechaHoraSalidaLlegadaOrigen y dateVen deben validarse correctamente para evitar errores al guardar.

Reglas recomendadas:

'FechaHoraSalidaLlegadaOrigen' => 'valid_date[Y-m-d H:i:s]',
'date' => 'valid_date[Y-m-d]',

6. 🗃️ Tipos de datos y restricciones en migraciones

Define los tipos y constraints según las necesidades, con especial atención a los campos bigint, decimal, y datetime.

Ejemplo para migración:

'idEmpresa' => ['type' => 'bigint', 'constraint' => 20, 'null' => true],
'FechaHoraSalidaLlegadaOrigen' => ['type' => 'datetime', 'null' => true],

7. 🛡️ Validar parámetros en whereIn

Antes de usar whereIn, asegúrate que el parámetro es un arreglo no vacío para evitar errores:

if (!empty($empresas) && is_array($empresas)) {
    $builder->whereIn('idEmpresa', $empresas);
}

8. 📝 Control y validación de datos JSON

Cuando almacenas JSON en campos de texto, serialízalo con json_encode() y deserialízalo con json_decode().

9. 🔤 Codificación de caracteres y collation

Ambas bases deben usar UTF-8 para evitar problemas con caracteres especiales.

10. 🔀 Código condicionado por tipo de base de datos

Evita usar funciones específicas sin validar el motor de base de datos. Detecta el driver para aplicar condicionales:

$dbDriver = $this->db->DBDriver;

if ($dbDriver === 'Postgre') {
    // Código para PostgreSQL
} else {
    // Código para MariaDB
}

🎯 Conclusión

Trabajar con CodeIgniter y dos bases de datos tan distintas como MariaDB y PostgreSQL puede ser retador, pero siguiendo estas buenas prácticas lograrás un código robusto, limpio y compatible.

Recuerda siempre:

  • ✅ Usar joins explícitos
  • 🔧 Normalizar datos para PostgreSQL
  • ⏳ Validar y formatear fechas correctamente
  • 🆔 Usar alias sin modificaciones
  • ⚙️ Condicionar funcionalidades según el motor de base de datos

Así evitarás errores comunes y ahorrarás tiempo valioso en debugging.

¿Quieres ejemplos prácticos para implementar estas soluciones? Contáctame y te los preparo.

Publicado por Julio Cesar — Desarrollador PHP y entusiasta de bases de datos.


Comentarios

Entradas populares