2013-03-07 43 views
4

我有同樣的問題報告在這裏:Doctrine 2.2 wants to recreate all my tables如何指定用於Doctrine 2.2/Symfony 2.2和PostgreSQL的模式?

我使用PostgreSQL和我的表是在公共架構。

app/console doctrine:schema:update想要重新創建我的所有表格,顯然是因爲它正在用戶模式中查找,而不是公用的。我的Symfony應用程序正常工作,這似乎有點奇怪。

隨着Symfony 2.2/Doctrine 2.2我在哪裏指定模式?我似乎無法在任何文檔中找到它。

回答

6

如果您使用的是public模式,您不必做任何特殊的事情,因爲PostgreSQL會自動回退。

但是,如果要指定另一個模式 - 或強制執行public模式的情況下,PostgreSQL的回退將使用到另外一個由於某種原因 - 在@Table註釋具有schema property

use Doctrine\ORM\Mapping\Table; 

/** 
* @Table(schema="some_schema") 
*/ 
class Entity 
{ 
    // ... 
} 
+0

感謝但沒有按並沒有真正解釋爲什麼應用程序/控制檯原則:schema:update會嘗試在用戶架構上執行某些操作,而不是公開以及如何停止它。我剛剛通過編輯我的PostgreSQL配置解決了我的直接問題,使$ user從search_path中退出,如http://forums.enterprisedb.com/posts/list/302.page中所述,但是...我想我是在更大的圖景中缺少一些東西。我是PostgrSQL的新手 – tetranz 2013-03-07 19:57:40

+0

這可能是因爲你的數據庫中有一個以你的用戶名命名的模式,而PostgreSQL試圖使用它,並且只有在這個模式退回到'public'模式之後。只需放棄該架構。 – 2013-03-07 20:10:12

+0

我似乎只有公共架構,至少這是我在pgAdmin中可以看到的。 – tetranz 2013-03-08 15:51:17

相關問題