sql >> Databasteknik >  >> RDS >> PostgreSQL

Kan jag få Ecto att logga rå SQL?

Ecto använder endast förberedda uttalanden. När du använder ecto-frågesyntax är det inte möjligt att införa SQL-injektion. Frågesyntaxen verifierar vid kompilering att ingen SQL-injektion är möjlig.

Att visa exakt de körda frågorna kan vara svårt på grund av två anledningar:

  • Postgrex (och därmed Ecto) använder det binära protokollet postgresql (istället för det vanligaste, men mindre effektiva, textprotokollet), så PREPARE fråga existerar aldrig som en sträng.
  • I de flesta fall är allt du ser en initial PREPARE 64237612638712636123(...) AS ... och senare en massa EXECUTE 64237612638712636123(...) vilket inte är så användbart. Att försöka relatera en till en annan skulle vara hemskt.

Enligt min erfarenhet använder de flesta program av det slaget prepare-satser och loggar dem istället för råfrågor, eftersom det är mycket mer användbart för att förstå systemets beteende.



  1. Använder Managed Oracle ODP.NET-drivrutinen nätverkskryptering?

  2. Hur ansluter man till SQL Server-databas från JavaScript i webbläsaren?

  3. Hur man hanterar fel i SQL Server-kapslade transaktioner

  4. Ändra php-skript till PDO orsakar syntaxfel under MySQL-uppdateringsfråga