¡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();
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);
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.
Publicado por Julio Cesar — Desarrollador PHP y entusiasta de bases de datos.


Comentarios
Publicar un comentario