Mam świeżą instalację Symfony 2.8, z doktryną i stosem MySQL 5.6.Aktualizacja schematu doktryny zawsze próbuj dodać NOT NULL
po wykonaniu doctrine:schema:update --force
widzę
Database schema updated successfully! "x" queries were executed
Oto mój problem: Nawet jeśli mogę wykonać to wielokrotność czasu, doktryna zawsze znaleźć różnice schematu.
Z --dump-sql
, widzę, że wszystkie te pytania są związane z:
- dodanie NOT NULL na ciąg klucz podstawowy
- dodanie NOT NULL na datetime dziedzinie
Jednak, gdy sprawdzam moją bazę danych, te kolumny mają już wartość NOT NULL.
Oto przykład na jednym nieruchomość/kolumny:
class MyEntity
{
/**
* @ORM\Id
* @ORM\Column(type="string", length=5, name="cd_key")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $code;
...
Tutaj jest wynikiem 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 ;
I tu doktryna zapytania staramy się wykonać za pomocą polecenia doctrine:schema:update
:
ALTER TABLE my_entity CHANGE cd_key cd_key VARCHAR(5) NOT NULL;
- Czyszczę pamięć podręczną Symfony między każdym wykonaniem polecenia.
- Próbuję dodać
nullable=false
na adnotacji @Column (zdarzenie, jeśli jest już zdefiniowane jako @ID), ale bez efektu. - a
doctrine:schema:validate
nie znajduję żadnego problemu z mapowaniem (z wyjątkiem synchronizacji kursu) - Próbuję upuścić i ponownie utworzyć pełną bazę danych, ale bez efektu.
Wszelkie pomysły?
nie ustawiłoby opcji 'nullable = false' oznacza, że dodaje ona" NOT NULL "jako część tej kolumny? Zmiana na 'nullable = true' pozwoli na wartość zerową. –