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

Mã cảnh báo Mysql 1592 Tuyên bố không an toàn được ghi vào nhật ký nhị phân bằng cách sử dụng định dạng câu lệnh

Có lẽ bạn đã quen thuộc với hai định dạng của ghi nhật ký nhị phân , dựa trên câu lệnh - ghi lại các truy vấn thực tế sửa đổi dữ liệu trên cái chính để chúng có thể được thực thi trên phụ và dựa trên hàng - ghi nhật ký trước và / hoặc hình ảnh sau của dữ liệu hàng thực tế đã được thay đổi bởi truy vấn, để máy chủ có thể áp dụng trực tiếp những thay đổi đó vào dữ liệu của nó ... và chế độ hỗn hợp, nơi trình tối ưu hóa và công cụ lưu trữ xác định định dạng nào là định dạng tối ưu trên cơ sở từng truy vấn.

Tuyên bố bạn đang thực hiện là không an toàn về nguyên tắc bởi vì bạn đang sử dụng INSERT ... SELECT vào một bảng có cột tăng tự động. Nếu một truy vấn thuộc dạng chung đó đã được sử dụng trong một STATEMENT môi trường dựa trên cơ sở và SELECT đã không trả về các hàng theo cùng một thứ tự trên chính và phụ, các hàng có thể được chọn theo một thứ tự khác và do đó kết thúc với các giá trị tăng tự động khác nhau.

Trong thực tế, cụ thể truy vấn bạn đang thực hiện is xác định bởi vì bạn chỉ chèn một hàng và bạn đang chỉ định rõ ràng giá trị tự động tăng. Tôi nghi ngờ đó là nguyên nhân khiến bạn nhầm lẫn. Tuy nhiên, có vẻ như bạn vẫn đang kích hoạt cảnh báo vì bạn đang thực hiện INSERT ... SELECT vào một bảng có tăng tự động và máy chủ dường như đang áp dụng xác định "không an toàn" tổng quát cho truy vấn như một vấn đề về nguyên tắc, thay vì chính xác.

Chuyển binlog_format của bạn thành MIXED nên làm cho cảnh báo biến mất, vì máy chủ có thể chuyển đổi chế độ theo ý của mình ... và rất ít có khả năng có tác dụng phụ tiêu cực. Nếu không phải vì thực tế là STATEMENT luôn là mặc định (vì ban đầu đó là loại sao chép duy nhất có sẵn), tôi nghi ngờ họ đã tạo MIXED mặc định từ lâu ... trên thực tế, nếu bạn đã tự làm quen với nội dung của nhật ký nhị phân, bạn có thể có xu hướng làm như tôi và sử dụng ROW về mọi thứ ... nó có xu hướng tạo ra một nhật ký nhị phân hữu ích hơn nhiều để khắc phục sự cố và giúp bạn thoát khỏi rắc rối, vì dữ liệu hàng "cũ" được ghi trên DELETEUPDATE .




  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ó bất kỳ đường hầm PHP MySQL HTTP phổ quát nào tốt không?

  2. Jquery autocomplete và PHP:điền trường đầu vào với dữ liệu từ cơ sở dữ liệu mySQL dựa trên tùy chọn đã chọn trong trường autocomplete

  3. Lọc tìm kiếm với PHP / MySQL

  4. ngủ đông lỗi truy vấn SQL gốc

  5. Tìm kiếm tất cả các cột của một bảng bằng cách sử dụng một điều kiện trong đó với một từ khóa duy nhất trong mysql