Pregunta

Recientemente comencé a usar Zend Framework. Comencé a desarrollar en mi servidor XAMPP local que funcionó bien, pero cuando lo cargué en mi cuenta 1and1, sigo recibiendo el siguiente error:

  

Mensaje: SQLSTATE [HY000] [2002] no puede   conectarse al servidor MySQL local a través de   socket '/var/run/mysqld/mysqld.sock'   (2)

He intentado cambiar la línea resources.db.params.unix_socket en mi archivo application.ini a las diferentes mencionadas en phpinfo pero sin éxito. Encontré aquí que alguien respondió

  

¿Está el servidor MySQL en el mismo host?   como la aplicación web? Si no, tu   no puede usar una conexión de socket, y   necesitará conectarse a través de TCP.

Creo que ese es el caso con mi proveedor de alojamiento web. ¿Cómo puedo cambiar ZF para conectarse a través de TCP? Actualmente estoy usando PDO_MYSQL.

¿Fue útil?

Solución 2

Había dejado la línea:

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

en mi index.php como está pero había cambiado public / .htaccess a

SetEnv APPLICATION_ENV production

Parece que el .htaccess no se estaba leyendo. Cambié la instrucción else en index.php a 'producción' para usar la configuración de la base de datos de producción y funcionó. Muy frustrante Me pregunto por qué la variable de entorno no se estaba leyendo. Gracias por tu ayuda.

Otros consejos

La forma de conectarse a MySQL depende de los parámetros que pase a mysql_connect () . Si le pasa una ruta de archivo, es decir. /var/run/mysqld/mysqld.sock , intentará una conexión de socket. Si le pasa un nombre de host, intentará una conexión TCP.

Necesita encontrar el nombre de host (o IP) del servidor mysql y conectarse de esta manera:

mysql_connect('127.0.0.1:3306',$username,$password);

Las probabilidades son para ZF, solo puede especificar esto en el archivo de configuración donde almacena la configuración de su base de datos, o cuando se conecta a la base de datos utilizando la configuración host :

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));

Editar : si está pasando un nombre de host / puerto adecuado como parámetro de host a mysql_connect () y recibe este mensaje, entonces es muy probable que sea un problema de configuración del servidor.

Intente ajustar la configuración mysql.default_socket , ya sea en php.ini o en la parte superior del código de su aplicación utilizando ini_set ()

ini_set('mysql.default_socket','/path/to/real/socket.sock');

Tendrás que averiguar dónde está el archivo de socket. A menudo es '/var/lib/mysql/mysql.sock', pero creo que depende del sistema.

Zend Framework tiene una opción en db params unix_socket , simplemente utilícelo

 $config= array(
 'db' => array(
'host'   => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
  )
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top