Qualcuno può spiegare il seguente schema dei messaggi di errore di convalida dottrina per favore:Database FAIL - Lo schema del database non è in sincronia con il file di mapping corrente
Ecco la definizione della yaml ORM di ogni entità in la relazione manyToMany, creata in linea con la sezione 5.9 di documentation.
Rep\Bundle\ProjectBundle\Entity\User:
type: entity
table: User
fields:
id:
id: true
type: integer
unsigned: true
nullable: false
generator:
strategy: AUTO
username:
type: string
length: 25
fixed: false
nullable: false
salt:
type: string
length: 32
fixed: false
nullable: false
password:
type: string
length: 40
fixed: false
nullable: false
email:
type: string
length: 60
fixed: false
nullable: false
manyToMany:
roles:
targetEntity: UserRole
inversedBy: users
joinTable:
name: UserRoleLookup
joinColumns:
user_id:
referencedColumnName: id
inverseJoinColumns:
user_role_id:
referencedColumnName: id
lifecycleCallbacks: { }
E la configurazione inversa yaml UserRole:
Rep\Bundle\ProjectBundle\Entity\UserRole:
type: entity
table: UserRole
fields:
id:
id: true
type: integer
unsigned: true
nullable: false
generator:
strategy: AUTO
name:
type: string
length: 50
fixed: false
nullable: false
manyToMany:
users:
targetEntity: User
mappedBy: roles
lifecycleCallbacks: { }
Ecco lo schema della tabella degli utenti:
CREATE TABLE `User` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
`salt` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Lo schema della tabella UserRole:
CREATE TABLE `UserRole` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
E l'UserRoleLookup schema:
CREATE TABLE `UserRoleLookup` (
`user_id` int(11) unsigned NOT NULL,
`user_role_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`user_id`,`user_role_id`),
KEY `user_role_id` (`user_role_id`),
CONSTRAINT `userrolelookup_ibfk_2` FOREIGN KEY (`user_role_id`) REFERENCES `userrole` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `userrolelookup_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Come si può vedere, si tratta di una configurazione abbastanza semplicistico con un look-up table di dettare i ruoli di un utente o l'insieme di utenti in un determinato ruolo utente. Tuttavia, sto ricevendo questo errore di sincronizzazione frustrante. Non ho letto nulla qui o online che risponda a questa domanda in qualche dettaglio conciso, speravo che qualcuno potesse chiarire se sono sicuro di lasciare questa configurazione e ignorare questo errore?
. Ha funzionato per me. Ovviamente il comando è "orm: schema: update" nel caso in cui si usi zf2 e doctrine/doctrine-orm-module –
Questo dà l'errore "L'opzione '--full-database' non esiste." (Symfony 2.8.1) –
Sembra che sia stato rinominato come '-completo': https://github.com/doctrine/doctrine2/blob/b055d78ea19835fab563dfc234d4804a9d04966a/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/UpdateCommand. php –