sql >> Database teknologi >  >> RDS >> PostgreSQL

Kan jeg få Ecto til at logge rå SQL?

Ecto anvender kun udarbejdede erklæringer. Når du bruger ecto-forespørgselssyntaks, er det ikke muligt at introducere SQL-injektion. Forespørgselssyntaksen verificerer på kompileringstidspunktet, at ingen SQL-injektion er mulig.

Det kan være svært at vise præcis de udførte forespørgsler på grund af to årsager:

  • Postgrex (og dermed Ecto) bruger den binære postgresql protokol (i stedet for den mest almindelige, men mindre effektive tekstprotokol), så PREPARE forespørgsel eksisterer faktisk aldrig som en streng.
  • I de fleste tilfælde ville du kun se én indledende PREPARE 64237612638712636123(...) AS ... og senere en masse EXECUTE 64237612638712636123(...) hvilket ikke er så nyttigt. At prøve at relatere hinanden til hinanden ville være forfærdeligt.

Fra min erfaring kan det meste af den slags software bruge forberede sætninger og logge dem i stedet for rå forespørgsler, da det er meget mere nyttigt til at forstå systemets adfærd.



  1. MYSQL-lagrede procedure for opdateringsvariabler er 0

  2. Vinduesfunktioner SORTERE dyre, kan vi overkomme det?

  3. Kan ikke lave batch-indsættelse i Oracle DB ved hjælp af MyBatis

  4. Bruger du de rigtige værktøjer til overvågning af databaseydelse?