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.