Я новичок в 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.
И вот конфигурация 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; } ?>
Слишком поздно, но я надеюсь, что это может помочь кому-то.
Только сегодня я попадаю в аналогичную ситуацию (но в другом контексте я пытался создать сущности из db).
Я решил это просто изменить database_host от «localhost» до «127.0.0.1» в файле parameters.ini.
Я думаю, что мой экземпляр Mysql работает только через TCP, а не сокет, и потому, что при использовании database_host = "localhost" он терпит неудачу.
Попробуйте добавить эту строку
unix_socket: /tmp/mysql.sock
в ваш файл config.yml> doctrine> dbal сразу после строки пароля.
Я изменил 'host' => 'localhost' на 'host' => '127.0.0.1' на app / config / database.php, и все работает правильно
Я исправил это, выполнив этот небольшой учебник: http://andreys.info/blog/2007-11-07/configuring-terminal-to-work-with-mamp-mysql-on-leopard
[EDIT]: Я изменил правильный 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"
Я постараюсь понять это сам, но если кто-то из вас знает, как это исправить, не стесняйтесь комментировать это. Благодаря!
Проблема для меня была в параметре mysql.default_socket
в PHP.INI по умолчанию в другом месте, чем где MySQL фактически помещает этот файл.
Вместо редактирования файлов конфигурации я создал псевдоним в местоположении, которое ищет PHP, который подключается к реальному mysql.sock.
Просто запустите эти две команды (перезагрузка не требуется):
mkdir /var/mysql ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Иногда у вас может быть несколько решений для маршрута расположения mysql.lock. Но я думаю, что лучшее решение – это просто увидеть путь местоположения mysql, используя phpinfo()
php phpinfo()
.
Примечание: если вы не знакомы с phpinfo()
, просто создайте файл, укажите любое имя и phpinfo()
содержимое этого файла, как это
<?php phpinfo(); ?>
запустите этот файл и получите путь к файлу mysql.lock. Я думаю, это поможет.
Стоит проверить, работает ли Mysql.
Слишком поздно, но надеюсь, что это тоже поможет кому-то.
Я использую Vagrant
Просто измените localhost
на 127.0.0.1
и измените порт на 3333
работал отлично.
Я думаю, что просто перезапустите mysql и apache, это работает для меня.
Перезапуск mysql работал для меня:
sudo /etc/init.d/mysql restart