PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tôi có thể sử dụng Ecto để đăng nhập SQL thô không?

Ecto chỉ sử dụng các tuyên bố đã chuẩn bị trước. Khi sử dụng cú pháp truy vấn ecto, không thể đưa vào SQL injection. Cú pháp truy vấn xác minh tại thời điểm biên dịch rằng không thể đưa vào SQL.

Việc hiển thị chính xác các truy vấn được thực thi có thể khó khăn vì một số lý do sau:

  • Postgrex (và do đó là Ecto) sử dụng giao thức nhị phân postgresql (thay vì giao thức văn bản phổ biến nhất nhưng kém hiệu quả hơn), vì vậy PREPARE truy vấn không bao giờ thực sự tồn tại dưới dạng một chuỗi.
  • Đối với hầu hết các trường hợp, tất cả những gì bạn thấy sẽ là một PREPARE 64237612638712636123(...) AS ... ban đầu và sau đó rất nhiều EXECUTE 64237612638712636123(...) điều đó không hữu ích. Cố gắng liên hệ giữa người này với người khác sẽ rất kinh khủng.

Theo kinh nghiệm của tôi đối với hầu hết các phần mềm thuộc loại đó, hãy sử dụng các câu lệnh chuẩn bị và ghi nhật ký chúng thay vì các truy vấn thô, vì nó hữu ích hơn nhiều trong việc hiểu hoạt động của hệ thống.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giám sát PostgreSQL đang chạy bên trong vùng chứa Docker:Phần thứ nhất

  2. Không thể kết nối PostgreSQL với cơ sở dữ liệu từ xa bằng pgAdmin

  3. Đặt hàng theo ngày ASC với dữ liệu mùa xuân

  4. Postgres pl / java cảnh báo

  5. Làm cách nào để đọc dấu thời gian có giá trị múi giờ (timestamptz) từ PostgreSQL trong Rust?