Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego DBI niejawnie zmienia liczby całkowite na łańcuchy?

Jak zauważa @choroba w swojej odpowiedzi, to nie DBI robi cokolwiek z danymi. Po prostu przechodzi przez to, co zwrócił moduł sterownika (w twoim przypadku DBD::mysql).

W Ogólne zasady i zastrzeżenia dotyczące interfejsu sekcja dokumentacji DBI mówi:

Pisałem o tym w dawnych czasach, gdy konfigurowanie perla do obsługi 64-bitowych liczb całkowitych było powszechne, a typy zmiennoprzecinkowe typu long-double były niezwykłe. Obecnie zalecam, aby sterowniki zwracały wartości w najbardziej „naturalnym” typie Perla, który nie grozi utratą danych.

W przypadku niektórych sterowników, które mogą być trudne do zaimplementowania, zwłaszcza tych, które obsługują zwracanie wielu zestawów wyników, z różną liczbą kolumn, z jednego uchwytu, tak jak robi to DBD::mysql.

Przejrzałem DBD::mysql docs ale nie widziałem żadnej wzmianki na ten temat, więc spojrzałem na odpowiedni kod gdzie widzę, że obecny DBD::mysql jest zwracanie liczb jako liczb. W Dzienniku zmian znajduje się również wiele odniesień do ostatnich zmian w tym obszarze .

Być może używasz starej wersji DBD::mysql i powinieneś zaktualizować.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuwanie milionów wierszy w MySQL

  2. MySQL dla każdej alternatywy dla procedury

  3. Jak przekonwertować datę i godzinę MySQL na NSDate?

  4. Jakie są różnice między procedurami składowanymi, funkcjami i procedurami?

  5. Jak uciec od pojedynczego cudzysłowu i znaków specjalnych w MySQL