Lỗi tạo khóa ngoại từ MySQL Workbench


9

Tôi đang cố gắng đồng bộ hóa các thay đổi lược đồ từ MySQL Workbench vào cơ sở dữ liệu của mình. Tôi đang gặp lỗi sau khi cố gắng tạo khóa ngoại:

Executing SQL script in server
ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121)

Đây là tuyên bố mà nó đang cố thực hiện:

ALTER TABLE `tomato`.`ing_allergy_ingredient` 
ADD CONSTRAINT `fk_ai_allergy`
FOREIGN KEY (`allergy_id` )
REFERENCES `tomato`.`ing_allergy` (`allergy_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION

Bất kỳ ý tưởng lỗi này có nghĩa là gì?

Câu trả lời:


11

Bạn sẽ nhận được thông báo này nếu bạn đang cố gắng thêm một ràng buộc với một tên đã được sử dụng ở một nơi khác.

Theo bài đăng này, bạn có thể kiểm tra ràng buộc của bạn như thế này:

Nếu bảng bạn đang cố tạo bao gồm một ràng buộc khóa ngoài và bạn đã cung cấp tên riêng của mình cho ràng buộc đó, hãy nhớ rằng nó phải là duy nhất trong cơ sở dữ liệu. Chạy truy vấn này để xem tên đó có được sử dụng ở đâu đó không:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;

Khóa ngoại không xuất hiện trong truy vấn này, nhưng khi tôi nhìn vào bảng thì có một chỉ mục ở đó có cùng tên. Tôi tin rằng đó là một lỗi với sự đồng bộ hóa trong MySQL Workbench. Tôi đã tải xuống phiên bản mới nhất (5.2.31) và sự cố đã biến mất.
BenV
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.