2017-03-01 13 views
6

Tôi có bản cài đặt Symfony 2.8 mới, với giáo lý và MySQL 5.6 ngăn xếp.Cập nhật lược đồ doctrine luôn cố gắng thêm NOT NULL

Sau khi thực hiện một doctrine:schema:update --force, tôi có thể thấy
Database schema updated successfully! "x" queries were executed

Đây là vấn đề của tôi: Ngay cả nếu tôi thực hiện nó nhiều thời gian, học thuyết luôn tìm thấy sự khác biệt giản đồ.

Với --dump-sql, tôi có thể thấy rằng tất cả những thắc mắc có liên quan đến:

  • thêm NOT NULL trên chuỗi chính chủ chốt
  • thêm NOT NULL trên datetime lĩnh vực

Tuy nhiên, khi tôi kiểm tra cơ sở dữ liệu của tôi, các cột này đã có NOT NULL.

Dưới đây là một ví dụ về một tài sản duy nhất/cột:

class MyEntity 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="string", length=5, name="cd_key") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $code; 
    ... 

Dưới đây là kết quả của một SHOW CREATE TABLE my_entity;:

CREATE TABLE `my_entity` (
    `cd_key` varchar(5) COLLATE utf8_unicode_ci NOT NULL, 
    `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `number` int(11) NOT NULL, 
    PRIMARY KEY (`cd_key`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ; 

Và đây học thuyết truy vấn cố gắng thực hiện với lệnh doctrine:schema:update:

ALTER TABLE my_entity CHANGE cd_key cd_key VARCHAR(5) NOT NULL; 
  • Tôi làm sạch bộ nhớ cache Symfony giữa mỗi lần thực thi lệnh.
  • Tôi cố gắng thêm nullable=false vào chú thích @Column (sự kiện nếu nó đã được định nghĩa là @Id), nhưng không có hiệu lực.
  • a doctrine:schema:validate không tìm thấy bất kỳ vấn đề bản đồ nào (ngoại trừ đồng bộ hóa khóa học)
  • Tôi cố gắng thả và tạo lại cơ sở dữ liệu đầy đủ, nhưng không có tác động.

Bất kỳ ý tưởng nào?

+1

sẽ không đặt 'nullable = false' có nghĩa là nó thêm' NOT NULL' làm một phần của cột đó? Thay đổi nó thành 'nullable = true' sẽ cho phép giá trị rỗng. –

Trả lời

-1

Tôi đã gặp sự cố tương tự. Đối với tôi xóa bảng bằng cách sử dụng SQL và sau đó chạy lại DOCTRINE:SCHEMA:UPDATE --FORCE làm việc cho tôi.

Dường như việc thực hiện một số yêu cầu thủ công SQL làm rối loạn Doctrine.

Nói rằng, tôi giả sử bạn đã đặt @ORM\Table(name="my_entity")@ORM\Entity(repositoryClass="myrepository") qua định nghĩa lớp học của mình;).

Hy vọng điều đó sẽ hữu ích.

+0

Tôi cố xóa bảng (ngay cả cơ sở dữ liệu đầy đủ), nhưng sau một 'học thuyết: lược đồ: cập nhật' mới, tôi có cùng một vấn đề. Dù sao nhờ sự giúp đỡ của bạn :) – n3k

Các vấn đề liên quan