web-dev-qa-db-ja.com

`php app / console doctrine:schema:create`を実行しているときの「No such file or directory」のトラブルシューティング

Symfony2(beta4)を初めて使用し、Doctrine=であり、コマンドラインからDBスキーマを作成しようとすると問題が発生します。

エラーは次のとおりです。

$ 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

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

そしてエンティティ(私はそれをテストするために1つだけ作成しました)

<?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;
}
?>
36
LBridge

この小さなチュートリアルに従って修正しました: 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 

Php.iniのdate.timezone構成は次のとおりです。

date.timezone = "Europe/Paris"

私は自分でそれを理解しようとしますが、あなたの誰かがそれを修正する方法を知っていれば、これについてコメントすることをheしないでください。ありがとう!

5
LBridge

遅すぎますが、それが誰かの助けになることを願っています。

ちょうど今日、私は同様の状況に陥ります(ただし、他のコンテキストでは、dbからエンティティを作成しようとしました)。

Parameters.iniファイルのde database_Hostを「localhost」から「127.0.0.1」に変更するだけで解決しました。

MysqlインスタンスはTCP経由でのみ実行され、ソケットではなく、これはdatabase_Host = "localhost"を使用すると失敗するためです。

160
EricSonaron

この行を追加してみてください

unix_socket: /tmp/mysql.sock

config.ymlファイルに> doctrine> dbalをパスワード行の直後に置きます。

19
Saperlipopette

App/config/database.phpで「Host」=>「localhost」を「Host」=>「127.0.0.1」に変更しましたが、すべて正常に動作しています

11
victormfv

私にとっての問題はmysql.default_socket PHP.INIの設定は、MySQLが実際にそのファイルを置く場所とは異なる場所にデフォルト設定されます。

設定ファイルを編集する代わりに、実際のmysql.sockに接続するPHPが探している場所にエイリアスを作成しました。

次の2つのコマンドを実行するだけです(再起動は不要です)。

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
2
Justin

Laravel。env add DB_SOCKETへのパスでmysql.sock

DB_CONNECTION=mysql
DB_Host=localhost
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=mypassword

DB_SOCKET=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock

またはPDOでunix_socketを追加します

PDO('mysql:Host=localhost;port=3306;unix_socket=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock', root, mypassword);
0

Mysqlも実行されているかどうかを確認する価値があります。

0
Isaac

MysqlとApacheを再起動するだけでうまくいくと思います。

0
Reyno D'Wolfer

Mysql.lockのロケーションパスのソリューションがいくつかある場合があります。しかし、最良の解決策は、php phpinfo()関数を使用してmysqlのロケーションパスを確認することだけだと思います。

注:phpinfo()に慣れていない場合は、ファイルを作成して任意の名前を付け、このファイルの内容を次のように含めます。

<?php
phpinfo();
?>

このファイルを実行し、mysql.lockファイルのパスを取得します。役立つと思います。

0
Mehedi Hasan

遅すぎますが、それが誰かにも役立つことを願っています。

Vagrantを使用しています

localhost127.0.0.1に変更し、ポートを3333に変更するだけです

完璧に働きました。

0
Fabio Valencio

デプロイメントのsymfony 3.2.9で同じ問題「SQLSTATE [HY000] [2002] No such file or directory」がありました

Parameters.ymlファイルでdatabase_Host値を「localhost」からサーバーIPに変更することで修正しました

しかし、SSHでコマンドラインを実行しようとすると、次のエラーメッセージが表示されました。

[Doctrine\DBAL\Exception\ConnectionException]ドライバーで例外が発生しました:SQLSTATE [HY000] [2002] Connection refused

最後に、これらの2行をconfig.ymlファイルのDoctrine設定セクションに追加します:

unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'

すべての私の最終doctrine=設定はこのようなものです:

doctrine:
    dbal:
        driver: pdo_mysql
        Host: '%database_Host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        unix_socket: /var/lib/mysql/mysql.sock
        server_version: '5.5'
        charset: UTF8

うまくいけば、これが役立つ

0
aina

Mysqlを再起動するとうまくいきました:

Sudo /etc/init.d/mysql restart

0
Geoffrey Hale