sql >> Databáze >  >> RDS >> Mysql

Proč DBI implicitně mění celá čísla na řetězce?

Jak poznamenává @choroba ve své odpovědi, není to DBI, kdo s daty něco dělá. Pouze prochází tím, co modul ovladače (ve vašem případě DBD::mysql) vrátil.

V části Obecná pravidla a upozornění rozhraní sekce dokumentů DBI říká:

Napsal jsem, že v dobách předtím bylo běžné konfigurovat perl tak, aby podporoval 64bitová celá čísla, a typy long-double s pohyblivou řádovou čárkou byly neobvyklé. V současnosti doporučuji, aby ovladače vracely hodnoty v „nejpřirozenějším“ typu Perl, u kterého nehrozí ztráta dat.

U některých ovladačů může být jejich implementace složitá, zejména u těch, které podporují vracení více sad výsledků s různým počtem sloupců z jednoho ovladače, jako to dělá DBD::mysql.

Prohlédl jsem dokumenty DBD::mysql ale neviděl jsem žádnou zmínku o tomto tématu, tak jsem se podíval na příslušný kód kde vidím, že aktuální DBD::mysql je vrací čísla jako čísla. V protokolu změn je také spousta odkazů na nedávné změny v této oblasti .

Možná používáte starou verzi DBD::mysql a měli byste upgradovat.



  1. Jak zvládnu otevření/zavření připojení Db v aplikaci Go?

  2. Spusťte dávkový soubor pomocí příkazu psql bez hesla

  3. Je opravdu nutné vytvářet SQLite tabulky při každém spuštění aplikace?

  4. nullvalue:Zobrazit hodnoty NULL v SQLite