sql >> Databasteknik >  >> RDS >> Mysql

Varför ändrar DBI implicit heltal till strängar?

Som @choroba noterar i sitt svar är det inte DBI som gör någonting med data. Det går bara igenom vad drivrutinsmodulen (DBD::mysql i ditt fall) returnerade.

I General Interface Rules &Caveats avsnittet i DBI-dokumenten står det:

Jag skrev det förr i tiden var det vanligt att konfigurera perl för att stödja 64-bitars heltal, och lång-dubbel flyttal var ovanliga. Nuförtiden rekommenderar jag att förare returnerar värden i den mest "naturliga" Perl-typen som inte riskerar dataförlust.

För vissa drivrutiner kan det vara svårt att implementera, särskilt de som stöder att returnera flera resultatuppsättningar, med olika antal kolumner, från ett enda handtag, som DBD::mysql gör.

Jag skummade DBD::mysql-dokumenten men jag såg inget om detta ämne, så jag tittade på relevant kod där jag kan se att den nuvarande DBD::mysql är returnerar siffror som siffror. Det finns också massor av referenser till de senaste ändringarna i det här området i ändringsloggen .

Du kanske använder en gammal version av DBD::mysql och bör uppgradera.



  1. Återställer raderad "root"-användare och lösenord för MySQL

  2. PHP - Använder PDO med IN-klausul array

  3. hur beviljar man användarrättigheter på ett specifikt schema?

  4. PostgreSQL konverterade fel från tidsstämpel utan tidszon till tidsstämpel med tidszon