sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor ændrer DBI implicit heltal til strenge?

Som @choroba bemærker i sit svar, er det ikke DBI, der gør noget med dataene. Det passerer bare igennem, hvad drivermodulet (DBD::mysql i dit tilfælde) returnerede.

I General Interface Rules &Caveats afsnittet i DBI-dokumenterne står der:

Jeg skrev det tilbage i dagene før, det var almindeligt at konfigurere perl til at understøtte 64-bit heltal, og long-double floating point-typer var usædvanlige. I disse dage anbefaler jeg, at chauffører returnerer værdier i den mest 'naturlige' Perl-type, der ikke risikerer datatab.

For nogle drivere kan det være vanskeligt at implementere, især dem der understøtter returnering af flere resultatsæt med forskellige antal kolonner fra et enkelt håndtag, som DBD::mysql gør.

Jeg skimmede DBD::mysql-dokumenterne men jeg så ingen omtale af dette emne, så jeg kiggede på den relevante kode hvor jeg kan se, at den aktuelle DBD::mysql er returnere tal som tal. Der er også masser af referencer til nylige ændringer i dette område i ændringsloggen .

Måske bruger du en gammel version af DBD::mysql og bør opgradere.



  1. INSERT COMMAND ::FEJL:kolonneværdien findes ikke

  2. DATE_FORMAT() Eksempler – MySQL

  3. Ved du, hvornår du skal prøve igen eller fejle, når du kalder SQL Server fra C#?

  4. hvordan man bruger dbms_scheduler til at køre jobbet hvert 30. minut