Tôi đang sử dụng doctrine2 với dự án symfony2.1. Tôi có một thực thể có một vài mối quan hệ với một vài bảng khác. Các mối quan hệ khóa ngoài cho những người này đã được cập nhật trong cơ sở dữ liệu, nhưng mỗi khi tôi chạy di trú: diff hoặc schema: update --dump-sql, nó thêm các lệnh cập nhật tương tự để thêm các mối quan hệ khóa ngoại. Khi tôi chạy lược đồ: xác nhận hợp lệ nó nói rằng ánh xạ của tôi không đồng bộ với cơ sở dữ liệu của tôi.Làm thế nào để dừng Doctrine2 Migrations: Khác với luôn luôn thêm mối quan hệ khóa ngoại đã tồn tại trong cơ sở dữ liệu?
Ứng dụng của tôi hoạt động tốt, các mối quan hệ hoạt động bình thường và lược đồ trong cơ sở dữ liệu của tôi có vẻ chính xác. Tại sao giáo lý vẫn cố gắng thêm những khóa ngoại này?
Dưới đây là mã của tôi (đối với một trong các thông số có vấn đề):
Trong tôi "vé" thực thể tôi có:
/**
* Authenticated User who scored the ticket.
*
* @ORM\ManyToOne(targetEntity="CS\SecurityBundle\Entity\User")
* @ORM\JoinColumn(name="scoring_user_id", referencedColumnName="id")
*/
protected $scoringUser;
Tôi hiện đã thiết lập nó là một chiều, do đó không có inversedBy trong thực thể User.
này tạo ra những điều sau đây trong cuộc di cư của tôi hay schema: cập nhật bãi mặc dù nó trong cơ sở dữ liệu đã:
$this->addSql("ALTER TABLE tickets ADD CONSTRAINT FK_54469DF4BB0D9452 FOREIGN KEY (scoring_user_id) REFERENCES users (id)");
Bất kỳ ý tưởng những gì tôi đang làm sai ở đây?
1) đảm bảo rằng cơ sở dữ liệu có ràng buộc, 2) cố gắng nâng cấp học thuyết – meze
Cảm ơn Mèze. Tôi nghĩ rằng vấn đề là cơ sở dữ liệu của tôi không sử dụng INNODB để nó không thể thiết lập các ràng buộc. (nếu tôi hiểu chính xác). Bất kỳ ý tưởng làm thế nào để làm cho học thuyết không cố gắng để thiết lập các hạn chế? Đây có vẻ là một câu hỏi tương tự: http://stackoverflow.com/questions/12156775/does-doctrine-2-required-foreign-keys-to-be-defined – cjewby
Bạn đã thử '@Table (name =" table_name "chưa? , options = {"engine" = "MyISAM"}) 'hoặc bất kỳ công cụ nào bạn đang sử dụng? – cheesemacfly