簡體   English   中英

cake console 2.2.1:烘烤錯誤

[英]cake console 2.2.1: Bake errors

OSX機器運行MAMP。 CakePHP 2.2.1已正確安裝和配置(這意味着當我瀏覽到Index.php文件時,我已經擁有了所有綠色條,我已經完成了博客教程並正在開發我的第二個應用程序,其中腳手架已啟動並運行)。 現在我想第一次烘烤。

根據cookbook(和其他人),我將一個新的蛋糕副本安裝到一個目錄(我的用戶目錄)中,然后將路徑變量放在我的.bash_profile文件中export PATH="$PATH:/Users/p_scott/cake221/app/Console"之后我能夠進入終端,鍵入cake並讓控制台出現。 你可以看到,到目前為止,我正在從app目錄調用控制台。

我首先嘗試使用-app參數從終端運行cake bake ,並指定我的練習應用程序的路徑。 我第一次這樣做,我得到了以下

    Welcome to CakePHP v2.2.1 Console
    -------------
    App : app
    Path: /Applications/MAMP/htdocs/blog/app/
    ------------- 
    Interactive Bake Shell
    --------------- 
    [D]atabase Configuration
    [M]odel
    [V]iew
    [C]ontroller
    [P]roject
    [F]ixture
    [T]est case
    [Q]uit
    What would you like to Bake? (D/M/V/C/P/F/T/Q)
    > c
    -------------------- 
    Bake Controller
    Path: /Applications/MAMP/htdocs/blog/app/Controller/
    -------------------- 
    \Use Database Config: (default/test)
    [default] >

無論我為數據庫添加什么(如果我把它留空,它再次問我),但任何答案都會給我以下錯誤:

    Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in    [/Users/p_scott/cake221/lib/Cake/Model/Datasource/Database/Mysql.php, line 149]

    Error: Database connection "SQLSTATE[HY000] [2002] No such file or directory" is missing, or could not be created.
    #0 /Users/p_scott/cake221/lib/Cake/Model/Datasource/DboSource.php(260): Mysql->connect()
    #1 /Users/p_scott/cake221/lib/Cake/Model/ConnectionManager.php(101): DboSource->__construct(Array)
    #2 /Users/p_scott/cake221/lib/Cake/Console/Command/Task/ModelTask.php(906): ConnectionManager::getDataSource('default')
    #3 /Users/p_scott/cake221/lib/Cake/Console/Command/Task/ControllerTask.php(396): ModelTask->getAllTables('default')
    #4 /Users/p_scott/cake221/lib/Cake/Console/Command/Task/ControllerTask.php(419): ControllerTask->listAll(NULL)
    #5 /Users/p_scott/cake221/lib/Cake/Console/Command/Task/ControllerTask.php(136): ControllerTask->getName()
    #6 /Users/p_scott/cake221/lib/Cake/Console/Command/Task/ControllerTask.php(61): ControllerTask->_interactive()
    #7 /Users/p_scott/cake221/lib/Cake/Console/Command/BakeShell.php(113): ControllerTask->execute()
    #8 /Users/p_scott/cake221/lib/Cake/Console/Shell.php(393): BakeShell->main()
    #9 /Users/p_scott/cake221/lib/Cake/Console/ShellDispatcher.php(201): Shell->runCommand(NULL, Array)
    #10 /Users/p_scott/cake221/lib/Cake/Console/ShellDispatcher.php(69): ShellDispatcher->dispatch()
    #11 /Users/p_scott/cake221/app/Console/cake.php(33): ShellDispatcher::run(Array)
    #12 {main}

一旦我開始收到此錯誤,我嘗試在終端導航到<cake install dir>/app/Console文件夾和<cake install dir>/app/Console文件夾的<different instance of cake install dir>/app/Console以便在我的app / s中嘗試控制台。 我要么得到相同的錯誤,要么問我不同的問題,例如:

    What is the path to the project you want to bake?  
    [/Users/p_scott/myapp] > /Applications/MAMP/htdocs/history/app 
    What is the path to the directory layout you wish to copy?  
    [/Applications/MAMP/htdocs/history/lib/Cake/Console/Templates/skel] > 

PHP CLI已安裝,似乎正在運行

    PHP 5.3.8 (cli) (built: Dec  5 2011 21:24:09) 
    Copyright (c) 1997-2011 The PHP Group
     Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

我的PDO支持似乎已啟用。 在終端我打字:

    php --ri pdo
    PDO
    PDO support => enabled
    PDO drivers => mysql, sqlite, sqlite2

我在Apache中沒有php.ini文件(因為我在Mac上),但在PHP 5.36目錄中,我啟用了以下擴展:

    extension=imap.so
    extension=yaz.so
    extension=mcrypt.so
    extension=gettext.so
    extension=pgsql.so
    extension=pdo_pgsql.so
    extension=pdo_mysql.so

休息之后,我發現了一篇文章(http://www.dereuromark.de/2011/10/31/freshly-baked-cake2-0-tips/),討論了2.0中控制台位置的變化。 我應該嘗試從該位置使用它( <cake installed dir>/lib/Cake/Console )。 一旦我嘗試了這個,我就得到了關於我想要使用什么布局的問題,或者...... ONCE,我能夠讓bake應用程序讓我創建一個數據庫配置。 我完成了這些步驟,並在最后解決了這個錯誤:

Fatal error: Class 'DATABASE_CONFIG' not found in /Applications/MAMP/htdocs/history/lib/Cake/Console/Command/Task/DbConfigTask.php on line 264

這讓我得到了另外一條信息。 這是我在<cake installation dir>/history/app/Config/database.php文件中的默認數據庫配置。

    class DATABASE_CONFIG {

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'cakeHistoryUser',
    'password' => 'cakeHistoryPassword',
    'database' => 'cake_history',
    'prefix' => '',
    //'encoding' => 'utf8',
   );

在發布這個問題(以及所有這些信息)之前,我花了一些時間在這里,看起來我的大部分問題都與CLI有關,但我只是看不到我需要改變什么,以及幾個小時后,我需要協助。

幫助我歐比萬,你是我唯一的希望

問題是您正在嘗試通過命令行與數據庫進行交互,但是PHP-CLI與MAMP證明的安裝不同,因此它不了解數據庫服務器。

嘗試在app/Config/database.php文件中將localhost更改為127.0.0.1 ,這應該可以解決問題。

這樣的事情發生在我身上,我發現使其工作的最簡單的方法是我在這里看不到將localhost更改為127.0.0.1並在末​​尾添加端口號,例如,MAMP使用端口號8899,所以:

“MySQL的:主機= 127.0.0.1:8889”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM