我正在按照
here和
also here所述的测试设置进行操作.当我尝试运行测试时,测试数据库正在创建过程中,我收到以下错误:
[DoctrineORMToolsToolsException]
Schema-Tool failed with Error ‘An exception occurred while executing ‘CREATE INDEX deletedAtidx ON SurveyHash (deletedAt)’:
SQLSTATE[HY000]: General error: 1 index deletedAtidx already exists’ while executing DDL: CREATE INDEX deletedAtidx ON SurveyHash (deletedAt)
[DoctrineDBALExceptionTableExistsException]
An exception occurred while executing ‘CREATE INDEX deletedAtidx ON SurveyHash (deletedAt)’:
SQLSTATE[HY000]: General error: 1 index deletedAtidx already exists
[DoctrineDBALDriverPDOException]
SQLSTATE[HY000]: General error: 1 index deletedAtidx already exists
[PDOException]
SQLSTATE[HY000]: General error: 1 index deletedAtidx already exists
doctrine:schema:create [–dump-sql] [–em[=”…”]]
purging database
[DoctrineDBALDBALException]
An exception occurred while executing ‘DELETE FROM PageImage’:
SQLSTATE[HY000]: General error: 1 no such table: PageImage
[PDOException]
SQLSTATE[HY000]: General error: 1 no such table: PageImage
doctrine:fixtures:load [–fixtures[=”…”]] [–append] [–em=”…”] [–purge-with-truncate]
DoctrineDBALExceptionTableNotFoundException : An exception occurred while executing ‘SELECT t0.label AS label_1,t0.value AS value_2 FROM Setting t0 WHERE t0.label = ? LIMIT 1’ with params [“webservice”]:
SQLSTATE[HY000]: General error: 1 no such table: Setting
查看我的实体,在SurveyHash实体中没有声明deletedAt索引两次,并且我有PageImage和Setting的实体,但是这些表没有被创建,正如sqliteman验证的那样.进一步的测试(参见下面其中一个答案中的注释)表明,由于多个表使用相同的索引名称,它会引发错误.
我的config_test.yml具有以下内容:
doctrine:
dbal:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
charset: UTF8
orm:
auto_generate_proxy_classes: true
auto_mapping: true
由于NDA,我可以分享的数据库信息有点受限,所以我希望这些错误是上面链接或我的config_test.yml的结果.我正在使用Symfony 2.4.6,如果这有所不同.
我认为你正在尝试做一个学说:schema:更新数据集有外键的表,或者你试图添加多个数据集.
你可以尝试的是删除数据库模式,重新创建它,然后用数据重新填充它.
所以首先做一个php app / console doctrine:schema:drop –force,然后php app / console doctrine:schema:create然后doctrine:fixtures:load.
我有同样的问题,这对我有用.
我只是飞过第一个链接而你正在做的是调用doctrine:schema:多次创建,当然因为你已经创建了它们而无法工作.你只能教条:架构:更新 – 强制它们或用drop / create重新创建!
回答
根据下面的评论这个答案错误是他给不同表上的不同索引命名相同,但索引中的名字必须是唯一的!