Tôi đang sử dụng lỗi nhật ký để ghi cảnh báo/lỗi vào một tệp. Khi tôi thực hiện lệnh INSERT IGNORE..SELECT, nó chỉ tiếp tục viết các thông báo cảnh báo này.Tắt cảnh báo cảnh báo không an toàn mysql
120905 3:01:23 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
Tôi muốn dừng trình ghi nhật ký mysql tiếp tục ghi lỗi trên và hơn. (Tôi không thể nhìn thấy nhật ký khác vì chúng điền vào toàn bộ logfile ...)
Trước hết, tôi chèn (a, b, c) vào một bảng. c phải là duy nhất trong bảng, và a, b được sử dụng để chọn. Truy vấn sẽ được như thế này
SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3
Và truy vấn chèn của tôi là
INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)
tôi nghĩ rằng tôi có thể thay đổi các truy vấn không để sản xuất cảnh báo, nhưng dữ liệu của tôi chứa trường độc đáo và tôi cần phải đảm bảo rằng các đệ là duy nhất trong bảng. Và 500 ~ 2000 hàng nên được chèn vào trong mỗi vài giây, vì vậy tôi cần phải chèn số lượng lớn.
Nếu đã có hàng chục triệu hàng được chèn vào và tôi cần chèn thêm 2000 hàng khác sau vài giây. Làm thế nào tôi có thể chèn chúng một cách an toàn vào bảng mà không làm đầy logfile với các cảnh báo?
(Tôi không thể tắt các bản ghi nhị phân vì tôi cần phải sử dụng sao chép mysql.)
Bạn đang sao chép các bảng - bởi vì nếu bạn là lỗi này là đáng kể. –
Có, tôi đang sử dụng sao chép mysql để sao lưu, lý do khả năng mở rộng – user1640242
Vậy bạn đã đọc thông báo lỗi chưa? – zerkms