2010-10-14 76 views
0

我幾乎一字一句地遵循着the documentation,除了我認爲是糾正的兩個調整。CodeIgniter和Doctrine:基表或視圖沒有找到

第一調整:我消除system/application/doctrine.php冗餘DIRECTORY_SEPARATOR

//this produces "...system/application//fixtures" 
$config = array('data_fixtures_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '/fixtures', 

//Replaced with: 
$config = array('data_fixtures_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixtures', 

所得路徑似乎是正確的。

第二次調整:生成的模型(例如models/User.php)似乎並沒有加載擴展Doctrine_Record基本模型,所以我想補充一個明確require()調用每個模型像這樣:

require('generated/BaseUser.php'); 

class User extends BaseUser { ... } 

所以,我的目前存在的問題:當談到時間來建立表的第一次:

$ ./doctrine build-all-reload 
build-all-reload - Are you sure you wish to drop your databases? (y/n) 
y 
build-all-reload - Successfully dropped database for connection named 'mydb' 
build-all-reload - Successfully created database for connection named 'mydb' 
build-all-reload - Created tables successfully 
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydb.user' doesn't exist 

學說似乎高興地空表,刪除表,刪除數據庫和創建數據庫,但我想不通爲什麼它贏得't 創建表。它清楚地說Created tables successfully,但SHOW TABLES;返回「沒有在數據庫中找到表」。

學說正在使用與我相同的MySQL用戶,其中有ALL PRIVILEGES

任何想法爲什麼學說不能創建表?希望我只是失明和/或愚蠢。

另外,有沒有我的方式,我可以只生成一個SQL CREATE語句文件的基礎上我的yaml架構或模型,我可以自己運行調試此問題?

回答

0

也許你已經做了,但沒有提及它,但你可能缺少所有需要的「加載」命令。在這裏使用require並不是最好的解決方案。

Doctrine_Core::loadModels(realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR . 'models'); 

這需要每個持有主義相關的模型文件(模型,basemodels,表,...),因爲它不遞歸工作目錄要做。我有同樣的問題,併爲我的每個目錄定義loadModels做了竅門。

+0

這就是解決方案......主義不瞭解基本模型。 'require'根本行不通。 – Dolph 2010-11-01 14:40:28

0

在這個特定情況下,表名「user」可能是一個原因。嘗試爲表格設置其他名稱。

+0

好吧,我只是試過'$ this-> setTableName('asdf');'並且沒有找到基表或視圖:1146表'mydb.asdf'不存在'。該數據庫仍然沒有任何表。 – Dolph 2010-10-14 20:26:08

+0

嘗試執行任務./doctrine build-sql(我不記得確切的名字)。它使用普通的sql生成文件,這會創建表格。接下來你將能夠決定它是否在SQL或教條中是錯誤的。 – 2010-10-15 06:09:31

+0

它生成'sql/schema.sql'這是一個空文件...奇怪,因爲它顯然意識到我的yaml和模型? – Dolph 2010-10-15 14:20:23

相關問題