symfony2 generate consultas php mysql doctrine2 symfony

php - consultas - generate entity symfony



SoluciĆ³n de problemas "No existe tal archivo o directorio" al ejecutar `php app/console doctrine: schema: create` (11)

Soy nuevo en Symfony2 (beta4) y Doctrine y tengo problemas cuando intento crear el esquema DB a través de la línea de comandos.

Aquí está el error:

$ 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

La configuración de la base de datos mysql está insertada correctamente en el archivo config / parameters.ini.

Y aquí está la configuración de Doctrine en 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

Y la entidad (hice solo uno para probarla)

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


A veces puede obtener varias soluciones para la ruta de ubicación de mysql.lock. Pero creo que la mejor solución es simplemente ver la ruta de ubicación de mysql utilizando la función php phpinfo() .

Nota: si no está familiarizado con phpinfo() , simplemente cree un archivo con cualquier nombre e incluya contenido de ese archivo como este

<?php phpinfo(); ?>

ejecuta este archivo y obtén la ruta del archivo mysql.lock. Creo que eso ayudará.


Cambié ''host'' => ''localhost'' a ''host'' => ''127.0.0.1'' en app / config / database.php y todo está funcionando correctamente


Creo que solo reiniciar el mysql y apache, eso es trabajo para mí.


Demasiado tarde, pero espero que pueda ayudar a alguien también.

Estoy usando Vagrant

Simplemente cambie localhost a 127.0.0.1 Y cambie el puerto a 3333

funcionó perfectamente


Demasiado tarde, pero espero que pueda ayudar a alguien.

Justo hoy caigo en una situación similar (pero en otro contexto, estaba tratando de crear entidades desde db).

Lo resolví simplemente modificando de database_host de "localhost" a "127.0.0.1" en el archivo parameters.ini.

Creo que mi instancia Mysql se ejecuta solo a través de TCP y no de socket y porque cuando usa database_host = "localhost" falla.


El problema para mí fue la configuración de mysql.default_socket en PHP.INI tiene por defecto una ubicación diferente a donde MySQL realmente coloca ese archivo.

En lugar de editar los archivos de configuración, creé un alias en la ubicación que PHP está buscando y que se conecta al mysql.sock real.

Simplemente ejecute estos dos comandos (no es necesario reiniciar):

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


Intenta agregar esta línea

unix_socket: /tmp/mysql.sock

en su archivo config.yml> doctrine> dbal justo después de la línea de contraseña.


Lo arreglé siguiendo este pequeño tutorial: http://andreys.info/blog/2007-11-07/configuring-terminal-to-work-with-mamp-mysql-on-leopard

[EDIT]: modifiqué el php.ini correcto y todo funciona bien ahora.

Ahora recibo el siguiente error:

[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

Aquí está la configuración date.timezone en php.ini

date.timezone = "Europe/Paris"

Trataré de resolverlo yo mismo, pero si alguno de ustedes sabe cómo solucionarlo, no dude en comentar sobre esto. ¡Gracias!


Reiniciar mysql funcionó para mí:

sudo /etc/init.d/mysql restart


Tenía el mismo problema "SQLSTATE [HY000] [2002] No existe ese archivo o directorio" en Symfony 3.2.9 sobre la implementación

Lo arreglé cambiando el valor de database_host de "localhost" a mi IP de servidor en mi archivo parameters.yml

pero tuve este otro mensaje de error al intentar ejecutar la línea de comandos por SSH:

[Doctrine / DBAL / Exception / ConnectionException] Se produjo una excepción en el controlador: SQLSTATE [HY000] [2002] Connection refused

Finalmente lo soluciono agregando estas 2 líneas en mi archivo config.yml en la sección de configuración de Doctrine:

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

toda mi configuración final de doctrina es así:

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

espero que esto ayude


Vale la pena comprobar si Mysql también se está ejecutando.