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?
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. –