运行`php app/console doctrine:schema:create`时对"没有这样的文件或目录"进行故障诊断

LBr*_*dge 40 php mysql symfony doctrine-orm

我是Symfony2(beta4)和Doctrine的新手,当我尝试通过命令行创建数据库模式时遇到问题.

这是错误:

$ php app/console doctrine:schema:create

Creating database schema...

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory  

[ErrorException]                                                                                          
Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) 
in /Applications/MAMP/htdocs/sf-test-2/vendor/doctrine-dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php line 36
Run Code Online (Sandbox Code Playgroud)

mysql数据库设置已正确插入config/parameters.ini文件中.

这是config.yml中的Doctrine配置

# Doctrine Configuration
doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
Run Code Online (Sandbox Code Playgroud)

和实体(我只做一个测试)

<?php
// src/Acme/NewsBundle/Entity/Article.php
namespace Acme\NewsBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class Article
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
protected $id;

/**
 * @ORM\Column(type="string", length="255")
 */
protected $title;

/**
 * @ORM\Column(type="text")
 */
protected $body;

/**
 * @ORM\Column(type="string", length="255")
 */
protected $author;

/**
 * @ORM\Column(type="date")
 */
protected $date;
}
?>
Run Code Online (Sandbox Code Playgroud)

Eri*_*ron 164

太晚了,但我希望它可以帮助别人.

就在今天,我陷入了类似的情况(但在其他情况下,我试图从db创建实体).

我解决了它只是在parameters.ini文件中将de database_host从"localhost"修改为"127.0.0.1".

我认为我的Mysql实例只能通过TCP而不是套接字运行,因为当使用database_host ="localhost"时它会失败.

  • @neil:谢谢.我的mac上有这个问题.127.0.0.1安全了我的一天;) (6认同)
  • 我还必须明确定义MySQL端口才能使其工作.我的MAMP在端口8889上运行,所以我的database_host最终看起来像:`127.0.0.1:8889`.希望这有助于其他人. (4认同)
  • 它真的很棒 (3认同)
  • 请注意,在MySQL连接的方式中,我们在工作中意识到连接字符串主机"localhost"和127.0.0.1之间存在差异.使用SSH代理,我们必须防止编写localhost.希望它有用. (2认同)

Sap*_*tte 19

尝试添加此行

unix_socket: /tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)

在密码行之后的config.yml文件> doctrine> dbal中.

  • 这个版本对我有用:unix_socket:/Applications/MAMP/tmp/mysql/mysql.sock (4认同)

小智 11

我在app/config/database.php上将'host'=>'localhost'更改为'host'=>'127.0.0.1',一切正常


LBr*_*dge 5

我按照这个小教程修复了它:http://andreys.info/blog/2007-11-07/configuring-terminal-to-work-with-mamp-mysql-on-leopard

[编辑]:我修改了正确的php.ini,现在一切正常.

现在我收到以下错误:

[Exception]                                                                                            
 DateTime::__construct(): It is not safe to rely on the system's timezone settings.
 You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
 In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
 We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead 
Run Code Online (Sandbox Code Playgroud)

这是php.ini中的date.timezone配置

date.timezone = "Europe/Paris"
Run Code Online (Sandbox Code Playgroud)

我会试着弄清楚自己,但如果你们中的任何人知道如何解决它,请毫不犹豫地对此发表评论.谢谢!