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

¿Por qué DBI implícitamente cambia números enteros a cadenas?

Como señala @choroba en su respuesta, no es el DBI el que está haciendo algo con los datos. Solo está pasando lo que devolvió el módulo del controlador (DBD::mysql en su caso).

En las Reglas y advertencias generales de la interfaz sección de los documentos de DBI dice:

Escribí eso en los días antes de que fuera común configurar perl para admitir números enteros de 64 bits, y los tipos de punto flotante doble largo eran inusuales. En estos días, recomiendo que los controladores devuelvan valores en el tipo Perl más 'natural' que no corre el riesgo de perder datos.

Para algunos controladores que pueden ser complicados de implementar, especialmente aquellos que admiten la devolución de múltiples conjuntos de resultados, con diferentes números de columnas, desde un único identificador, como lo hace DBD::mysql.

Leí los DBD::mysql docs pero no vi ninguna mención de este tema, así que miré el código correspondiente donde puedo ver que el DBD::mysql actual es devolver números como números. También hay muchas referencias a cambios recientes en esta área en el registro de cambios .

Tal vez esté usando una versión anterior de DBD::mysql y debería actualizarla.