Falta la conexión a la base de datos de CakePHP "Mysql", o no se pudo crear


Ha habido varios otros posts sobre esto, pero ninguna de las respuestas parecía funcionar para mí.

Cuando navego a la página de CakePHP en mi máquina local, hay un error:

Cake NO puede conectarse a la base de datos. Conexión a la base de datos Falta "Mysql", o no se pudo crear.

Cuando corro este útil código en mi hogar.ctp, obtengo la siguiente respuesta:

Error!: SQLSTATE [42000] [1049] Base de datos desconocida "test"

Sin embargo, mi Users/Ben/Sites/myapp/app/Config/database.php se ve así (configuré MAMP para buscar la raíz del documento en Users/Ben/Sites):

<?php
class DATABASE_CONFIG {

    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'Ben',
        'password' => 'mypass',
        'database' => 'CV',
    );
}

He creado un usuario de mysql llamado Ben con contraseña mypass y he creado una base de datos llamada CV bajo eso. Además, no puedo encontrar mención de una base de datos test en ninguna parte. Ayuda?

Author: hg8, 2013-10-09

18 answers

Intente agregar el socket:

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
 47
Author: Domingo C.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-09 21:07:56

Una alternativa a unix_socket (especialmente para las personas de OS X) es reemplazar localhost por 127.0.0.1

Sería como Sigue :

public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => '127.0.0.1',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database-name',
                'prefix' => '',
                'encoding' => 'utf8',
        );
 17
Author: enagra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-20 10:17:59

Editar php.ini y añadir:

extension=php_pdo_mysql.dll 

Luego reinicie su servidor web

 9
Author: King Jk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 04:16:08

En Mac, utilizando MAMP como plataforma de desarrollo, para cake la solución correcta es utilizar la solución Domingo Casarrubio.

Agregue el parámetro unix_socket a las configuraciones de su base de datos.

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
 8
Author: DecoMartins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-19 02:27:47

Este error también puede ser causado si el usuario de la base de datos de conexión no tiene los privilegios adecuados. Creo que solo necesita un mínimo de INSERTAR, SELECCIONAR, ACTUALIZAR y ELIMINAR.

Siempre compruebe el nombre de usuario/contraseña y los privilegios de usuario primero, ya que CakePHP probablemente dará un vago error de conexión a la base de datos para cualquiera de los dos.

 5
Author: Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-27 20:19:39

Me he dado cuenta de que has preguntado esto hace un año, y lo más probable es que ya lo habrías resuelto. Sin embargo, para aquellos que enfrentan los mismos problemas al intentar instalar CakePHP en XAMPP, todo lo que tiene que hacer es cambiar el 'login' a 'root', es decir, el login predeterminado de XAMPP, y dejar la 'password' como", es decir, en blanco. El código completo en su base de datos.el archivo php debería tener este aspecto:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'ckblog',//replace with your own database name
    'prefix' => '',
    //'encoding' => 'utf8',
);

Eso es todo.

 5
Author: Brajinder Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-14 00:42:38

Tuve el mismo problema y finalmente descubrí que fue causado por CakePHP no aceptando que usara un usuario con una contraseña, incluso si ese usuario fue creado en phpMyAdmin. Tuve que usar el usuario root sin contraseña.

Descubrí esto después de hacer el siguiente cambio en el archivo /lib/Cake/Error/exceptions.php .

La línea original:

protected $_messageTemplate = 'Database connection "%s" is missing, or could not be created.';

Se cambia a esto en su lugar:

protected $_messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n    %s";

Esto le dará la razón del problema para que usted puede cambiar la causa correctamente.

 2
Author: user3834255,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-13 13:31:34

Puede ser que falta soporte para mysql PDO.

Como raíz (o usando sudo):

apt-get install php5-mysql
 2
Author: Mike Rose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 04:18:48

Lo que me hizo al final fue que había creado una tabla en mi base de datos, pero no había datos en ella.

Para que CakePHP reconozca la conexión MySQL, tiene que haber una tabla con datos en ella.

 1
Author: Ben Caine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-12 02:21:43

Es posible que necesite crear la tabla en su archivo php... Abrir phpMyAdmin y comprobar para asegurarse de que existe CV base de datos.

 0
Author: Dragonman117,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-20 00:56:27

Solo para ayudar a Ubuntu a los usuarios: Tuve el mismo error en mi máquina ubuntu 13.10 con el último xampp downlaoded directamente de apachefriends. Probé la mayoría de las cosas en cada publicación que pude encontrar sobre este error, pero no las cosas específicas de mac. Al final, la solución resultó ser la misma que la respuesta elegida aquí:

Encuentra el socket que mysqld crea para que los programas se conecten:

user@host /opt$ find . -name mysql.sock
/opt/lampp/var/mysql/mysql.sock

Agrégalo al archivo de configuración de la base de datos CakePHP (CakePHP)/app/Config/database.php

'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'

Para mí, esto finalmente resultó en que mis comandos cake pudieran ejecutarse sin el error ": Falta la conexión a la base de datos "Mysql", o no se pudo crear.".

 0
Author: FaustoW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-03 17:58:11

Es tu modelo. Abra eso y debe haber la siguiente línea

public $useDbConfig = 'local';

Esto sobrescribe la configuración global y la vuelve a establecer en local

 0
Author: Tanvir Gaus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-11 12:07:30

Intenté empalmar el código del Ejemplo 2 de http://php.net/manual/en/pdo.connections.php en /app/View/Pages/home.ctp. Tuve que arreglar los argumentos del constructor PDO y cambiar el nombre de la tabla en la consulta. El código de ejemplo 2 devolvió el error " Error!: could not find driver"(en inglés). Basado en la respuesta de King Jk estaba intentando modificar el php.ini cuando empecé a preguntarme donde un php_pdo_mysql.so podría vivir. http://php.net/pdo_mysql mostró cómo se compiló como parte de PHP a través de la opción configure with-pdo-mysql a configurar. Recompilando solucionado mi problema. Nota Estoy trabajando en un sistema Ubuntu 12.10 con PHP 5.5.9 y Apache Webserver 2.4.6

 0
Author: jocassid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-21 05:56:37

En mi caso fue porque la base de datos no existía. Esperaba que ejecutar ./app/Console/cake schema create lo crearía, pero no lo hizo. Crearlo con create database <database name> en mysql hizo el truco (aunque ya había asignado privilegios).

 0
Author: Tyler Collier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-18 03:30:28

He tenido este problema desde que actualizé a OSX Yosemite e inserté la siguiente línea:

 'unix_socket' => '/tmp/mysql.sock'
 0
Author: paulleephp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-20 15:12:04

He estado luchando con esto todo el fin de semana y finalmente lo resolví. Resulta que el php.ini apunta a un "directorio de extensiones" inexistente. Crea un archivo phpinfo () y mira el valor de este campo: extensions_dir

He notado que en la carpeta instalada de mamp php hay una carpeta no-debug-non-zts-20131226, que es diferente del valor mostrado en el phpinfo(). Lo que hice fue clonar esta carpeta y cambiar el nombre al valor de phpinfo(). Probablemente podrías modificar el php.ini archivo, pero yo no quería.

No se si resolviste tu problema, pero estoy publicando esto porque mi problema era diferente y Google me trajo aquí, así que espero ayudar a los futuros googlers que tengan un problema similar.

Espero que esto ayude.

 0
Author: Chuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-02 18:46:09

Porque, cake bake usa un socket unix para conectarse a la base de datos
por lo que necesita agregar unix_socket para la cadena de conexión.
Tienes que confirmar la ubicación que almacena mysql.sock in WAS
Ejemplo: en mi caso estoy usando xampp en MACOS 10.11
(editar archivo Config / base de datos.php)

public $default = array(
  ‘datasource’ => ‘Database/Mysql’,
  ‘persistent’ => false,
  ‘host’ => ‘localhost’,
  ‘login’ => ‘root’,
  ‘password’ => ‘root’,
  ‘database’ => ‘cakephp’,
  ‘encoding’ => ‘utf8’,
  ‘unix_socket’ => ‘/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock’
);

Finalmente, ¡es trabajo para mí!

 0
Author: Quy Le,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-04 02:23:27

Si está en Godaddy (o cualquier otro alojamiento compartido para el caso), pueden estar limitando las conexiones salientes solo a los puertos 80 y 443.

 0
Author: aexl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-15 18:07:15