Helpex - Trao đổi & giúp đỡ Đăng nhập
6

Tôi đang cố gắng cập nhật bảng bằng truy vấn sau

update at_product A join
(
SELECT atbillfields.billeditemguid,count(*) AS numberOfPeopleBought
    ,sum(atbillfields.billeditemqty) AS soldquantity
FROM jtbillingtest.at_salesbill atsalesbill 
JOIN jtbillingtest.at_billfields atbillfields
    ON atsalesbill.billbatchguid=atbillfields.billbatchguid
WHERE atsalesbill.billcreationdate BETWEEN '2013-09-09' AND date_add('2013-09-09', INTERVAL 1 DAY)
GROUP BY atbillfields.billeditemguid) B ON B.billeditemguid = A.productguid
SET A.productQuantity = A.productQuantity - B.soldquantity

Nhưng, nhận được ngoại lệ sau:

Mã lỗi: 1175. Bạn đang sử dụng chế độ cập nhật an toàn và bạn đã cố cập nhật bảng không có WHERE sử dụng cột KEY Để tắt chế độ an toàn, hãy chuyển đổi tùy chọn trong Tùy chọn -> Truy vấn SQL và kết nối lại.

Khi tôi đưa ra một wheređiều khoản với cập nhật như thế nào A.productQuantity = 1, nó đã cập nhật cụ thể đó.

Ai đó có thể chỉ ra lý do tại sao tôi không thể thực hiện truy vấn và cách giải quyết vấn đề không?

6 hữu ích 0 bình luận 71k xem chia sẻ
32

Hãy xem:

http://justalittlebrain.wordpress.com/2010/09/15/you-are-using-safe-update-mode-and-you-tried-to-update-a-table-without-a-where-that- using-a-key-column /

Nếu bạn muốn cập nhật mà không có khóa nơi bạn phải thực thi

SET SQL_SAFE_UPDATES=0;

ngay trước truy vấn của bạn.

Một tùy chọn khác là viết lại truy vấn của bạn o bao gồm một khóa.

32 hữu ích 0 bình luận chia sẻ
6

Lỗi này có nghĩa là bạn đang hoạt động ở chế độ cập nhật an toàn và do đó bạn có hai tùy chọn:

  • bạn cần cung cấp mệnh đề where bao gồm chỉ mục để cập nhật thành công hoặc
  • Bạn có thể tắt tính năng này bằng cách SET SQL_SAFE_UPDATES = 0;
6 hữu ích 0 bình luận chia sẻ
4

Bạn có thể thử trên MysqlWorkbench

Đi tới Chỉnh sửa -> Tùy chọn

Nhấp vào tab "SQL Editor" và bỏ chọn hộp kiểm "Cập nhật An toàn"

Truy vấn -> Kết nối lại với Máy chủ (đăng xuất và sau đó đăng nhập)

Tôi hy vọng nó là hữu ích cho bạn.

4 hữu ích 0 bình luận chia sẻ
3

Trong MySQL 5.5, nếu bạn đang sử dụng MySQL Workbenchthì

  • Đi tới Edit->Preferences
  • Nhấp vào "SQL Queries"tab và bỏ chọn "Safe Updates"hộp kiểm.
  • Query -> Kết nối lại với Máy chủ ( logoutvà sau đó login)

Những công việc này.

3 hữu ích 0 bình luận chia sẻ
0

Trong trường hợp của tôi, tôi tắt kiểm tra khóa ngoại bằng lệnh Mysql này:

SET FOREIGN_KEY_CHECKS=0;
0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ mysql sql , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading