sql >> Databáze >  >> RDS >> PostgreSQL

Mohu přimět Ecto k protokolování raw SQL?

Ecto používá pouze připravené výpisy. Při použití syntaxe dotazu ecto není zavedení SQL injection možné. Syntaxe dotazu v době kompilace ověřuje, že není možné vložení SQL.

Zobrazení přesně provedených dotazů může být obtížné z několika důvodů:

  • Postgrex (a potažmo Ecto) používá binární protokol postgresql (místo nejběžnějšího, ale méně efektivního textového protokolu), takže PREPARE dotaz nikdy ve skutečnosti neexistuje jako řetězec.
  • Ve většině případů by vše, co byste viděli, byla jedna iniciála PREPARE 64237612638712636123(...) AS ... a později spoustu EXECUTE 64237612638712636123(...) což není tak užitečné. Pokoušet se spojit jeden s druhým by bylo hrozné.

Z mé zkušenosti vyplývá, že většina softwaru tohoto druhu používá příkazy Prepare a log je místo nezpracovaných dotazů, protože je to mnohem užitečnější pro pochopení chování systému.



  1. Co znamenají tyto možnosti zálohování pouze pro kopírování?

  2. Příliš mnoho automatických přírůstků s ON DUPLICATE KEY UPDATE

  3. MySQL vs MySQLi při použití PHP

  4. Ladění výkonu SQLite