我想将表从 order
更改为 shop_order
。首先,我在phpmyadmin中更改表名。
我会猜到,更改注释就足够了:
/**
* Order
*
* @ORMTable(name="shop_order")
* @ORMEntity
*/
class Order { ...
但是运行时
php bin/console doctrine:schema:update --dump-sql
它试图再次创建表:
CREATE TABLE `order` (id INT AUTO_INCREMENT NOT NULL ...
我还有其他文件需要更改吗?
清除缓存,然后再次使用phpmyadmin重新更改表名。一旦再次为 order
,请使用学说命令:
php bin/console doctrine:schema:update --dump-sql
如果您希望学说执行更改,请添加--force
。
还检查您的学说配置,可能是在其他地方缓存元数据(例如memcache)。您可能还需要清除这一点。
在三个级别上的教义缓存:查询缓存,元数据缓存和结果缓存。您可能想看看元数据。
doctrine:
orm:
auto_mapping: true
# each caching driver type defines its own config options
metadata_cache_driver: apc
result_cache_driver:
type: memcache
host: localhost
port: 11211
instance_class: Memcache
# the 'service' type requires to define the 'id' option too
query_cache_driver:
type: service
id: my_doctrine_common_cache_service
所以,如果例如,如果您的设置为memcache,那么您也必须重置memcache。
在这里查看文档。
尝试使用 force
,如这样:
php bin/console doctrine:schema:update --force --dump-sql
并删除缓存,请
如果它不起作用,我建议您使用迁移,因为看来Tha学说无法识别表名称的更改:
- 生成一个新的迁移。
- 擦除
up(
)和down()
方法的内容,然后用自定义SQL替换它们(Alter Table ...重命名为...)。
迁移文档
只需使用DB管理工具更改名称,相应地更改"实体"中的名称,清晰的缓存,您可以使用-doctrine:schema:update --dump-sql
然后不更改。