Устранение неполадок "Нет такого файла или каталога" при запуске `php app / console doctrine: schema: create` - PullRequest
36 голосов
/ 07 июня 2011

Я новичок в Symfony2 (бета4) и 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

Настройки базы данных mysql правильно вставлены в файл config / parameters.ini.

А вот конфигурация Doctrine в config.yml

# 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

И сущность (я сделал только один, чтобы проверить это)

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

Ответы [ 12 ]

157 голосов
/ 12 февраля 2012

Слишком поздно, но я надеюсь, что это может кому-то помочь.

Просто сегодня я попал в похожую ситуацию (но в другом контексте я пытался создать сущности из БД).

Iрешил это, просто изменив de database_host с "localhost" на "127.0.0.1" в файле parameters.ini.

Я думаю, что мой экземпляр Mysql работает только через TCP, а не через сокет, и потому, что при использовании database_host = "localhost "не получается.

19 голосов
/ 07 июня 2011

Попробуйте добавить эту строку

unix_socket: /tmp/mysql.sock

в файл config.yml> doctrine> dbal сразу после строки пароля.

11 голосов
/ 20 мая 2014

Я изменил 'host' => 'localhost' на 'host' => '127.0.0.1' в app / config / database.php, и все работает правильно

5 голосов
/ 07 июня 2011

Я исправил это, следуя этому небольшому руководству: 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 

Вот конфигурация date.timezone в php.ini

date.timezone = "Europe/Paris"

Я попробую сам разобраться, но если кто-нибудь из вас знаеткак это исправить, не стесняйтесь комментировать это.Спасибо!

2 голосов
/ 18 октября 2014

Для меня проблемой была настройка mysql.default_socket в PHP.INI по умолчанию в другом месте, чем MySQL, на самом деле помещающий этот файл.

Вместо того, чтобы редактировать файлы конфигурации, я создал псевдоним в месте, которое ищет PHP, который соединяется с настоящим mysql.sock.

Просто запустите эти две команды (перезапуск не требуется):

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
0 голосов
/ 05 марта 2019

Laravel .env добавить 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

или добавьте unix_socket в PDO

PDO('mysql:host=localhost;port=3306;unix_socket=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock', root, mypassword);
0 голосов
/ 09 февраля 2018

У меня была та же проблема "SQLSTATE [HY000] [2002] Нет такого файла или каталога" в symfony 3.2.9 при развертывании

Я исправил это, изменив значение database_host с "localhost" на IP моего серверав моем файле parameters.yml

, но у меня было еще одно сообщение об ошибке при попытке запустить командную строку по SSH:

[Doctrine \ DBAL \ Exception \ ConnectionException] Исключительная ситуация в драйвере: SQLSTATE [HY000] [2002] Соединение отклонено

Я наконец исправляю это, добавив эти две строки в мой файл config.yml в разделе конфигурации Doctrine:

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

вся моя окончательная конфигурация доктрины такая:

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 голосов
/ 05 мая 2017

Перезапуск MySQL работал для меня:

sudo /etc/init.d/mysql restart

0 голосов
/ 10 марта 2017

Я думаю, просто перезапустите MySQL, и Apache, это работа для меня.

0 голосов
/ 05 декабря 2016

Слишком поздно, но надеюсь, что это кому-то тоже поможет.

Я использую Vagrant

Просто измените localhost на 127.0.0.1 И измените порт на 3333

отлично сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...