我目前有一個單一的數據庫/實體管理器symfony2(2.1)應用程序工作得很好,包括教條遷移。我正在添加第二個數據庫連接+實體管理器,並且無法獲得理論遷移來執行我想要的操作。從本質上講,我希望我的大多數實體能夠存在於我的第一個'默認'數據庫中,並且在我的第二個數據庫中有幾個新的實體/表格 - 然後讓doctrine migrations管理對模式的任何更改。文檔似乎暗示你可以在連接上設置一個'schema_filter'來實現這一點。 (使用案例是這樣的:我們的應用程序有幾個安裝程序,用於白色標記的代理商,每個代理商都有自己的主數據庫。但是,我們正在實施交互式幫助,這些交互式幫助將由我們在CMS /博客接口類型和可用的,通過這第二個數據庫,所有的安裝)symfony2:多個數據庫連接/實體經理與教條遷移&schema_filter
到目前爲止,我的學說的配置看起來像這樣(從應用程序/配置/ config.yml):
dbal:
default:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
schema_filter: ~^(?!help_)~
cross_site:
driver: %crossite_database_driver%
host: %crossite_database_host%
port: %crossite_database_port%
dbname: %crossite_database_name%
user: %crossite_database_user%
password: %crossite_database_password%
charset: UTF8
schema_filter: ~^help_~
orm:
auto_generate_proxy_classes: %kernel.debug%
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
<most of the bundles>
help:
connection: cross_site
mappings:
HelpBundle: ~
的目的是使「默認」數據庫中的大部分實體/表格,但不包括任何表格用'help_'滾動。相反,第二個數據庫應該包含只有這些表以'help_'開頭。
但是,無論何時使用任一實體管理器運行學說遷移,它都將包含所有表,而不考慮其名稱。
php app/console doctrine:migrations:migrate # includes every table including help_*
php app/console doctrine:migrations:migrate --em="help" # includes every table
我錯用了schema_filter嗎?有另一種方法來實現我的目標嗎?
更新:這實際上更糟糕......在使用'help'實體管理器進行第一次遷移後,我不再能夠使用--em =「help」運行其他遷移;我收到此錯誤:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'migration_versions' already exists
對原始EM的遷移繼續正常工作。幫幫我?
你能否詳細解釋一下你的「cross_site」配置。 – hardik