emersonthis
estoy siguiendo el instrucciones de instalación/configuración de la prueba del complemento. Obtuve wp scaffold plugin-tests my-plugin
correr. Pero luego, en el siguiente paso cuando trato de ejecutar bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
Obtuve el siguiente error:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (61)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'
Mi sitio local de WordPress se ejecuta con MAMP (que funciona). No estoy seguro de si eso es relevante para el script de instalación, ya que creo que está creando una base de datos temporal para ejecutar las pruebas… ¿Importa si usa OSX mysql incorporado o MySQL de MAMP?
Aquí está la salida de wp --info
$ ./vendor/wp-cli/wp-cli/bin/wp --info
PHP binary: /Applications/MAMP/bin/php/php5.6.10/bin/php
PHP version: 5.6.10
php.ini used: /Applications/MAMP/bin/php/php5.6.10/conf/php.ini
WP-CLI root dir: /Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/wp-cli/wp-cli
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 0.19.2
Actualización 2
Descubrí que originalmente MySQL no estaba instalado… ¡por eso no podía conectarme! Pero ahora lo es. Ejecuté el script de instalación, y esto funciona…
$ ./vendor/wp-cli/wp-cli/bin/wp db tables
wp_users
wp_usermeta
wp_posts
wp_comments
wp_links
wp_options
wp_postmeta
wp_terms
wp_term_taxonomy
wp_term_relationships
wp_commentmeta
Pero cuando corro phpunit
Entiendo esto:
$ phpunit
PHP Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
PHP Stack trace:
PHP 1. {main}() /private/tmp/wordpress-tests-lib/includes/install.php:0
PHP 2. require_once() /private/tmp/wordpress-tests-lib/includes/install.php:21
PHP 3. require_wp_db() /private/tmp/wordpress/wp-settings.php:79
PHP 4. wpdb->__construct() /private/tmp/wordpress/wp-includes/load.php:350
PHP 5. wpdb->db_connect() /private/tmp/wordpress/wp-includes/wp-db.php:649
PHP 6. mysqli_real_connect() /private/tmp/wordpress/wp-includes/wp-db.php:1452
Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
Parte de mi problema es que no tengo claro si wp-cli debería ejecutarse completamente en PHP/Mysql nativo (cli), o PHP/Mysql de MAMP, o alguna combinación de ambos.
Actualización 4
Estoy bastante seguro de que el problema final es que phpunit debe instalarse en MAMP, pero lo estoy ejecutando desde OSX…
$which phpunit
/usr/bin/phpunit
Mencionado en esta esencia.
Actualización 6
Resulta que ya no puedes instalar phpunit usando pera. Así que lo agregué como una dependencia del compositor en require-dev, pero cuando ejecuto esa versión, aparece el mismo error.
$ ./vendor/phpunit/phpunit/phpunit
PHP Warning: mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
PHP Stack trace:
PHP 1. {main}() /private/tmp/wordpress-tests-lib/includes/install.php:0
PHP 2. require_once() /private/tmp/wordpress-tests-lib/includes/install.php:21
PHP 3. require_wp_db() /private/tmp/wordpress/wp-settings.php:79
PHP 4. wpdb->__construct() /private/tmp/wordpress/wp-includes/load.php:350
PHP 5. wpdb->db_connect() /private/tmp/wordpress/wp-includes/wp-db.php:649
PHP 6. mysqli_real_connect() /private/tmp/wordpress/wp-includes/wp-db.php:1452
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /private/tmp/wordpress/wp-includes/wp-db.php on line 1452
Incluso lo agregué a mi camino para estar seguro…
$ which phpunit
/Applications/MAMP/htdocs/pipeline/wp-content/plugins/wp-github-pipeline/vendor/phpunit/phpunit/phpunit
Actualización 7
Después de leer los comentarios en la parte inferior de este publicación de blog, veo que el script de instalación hacía referencia a la versión OSX de mysqladmin
. No estoy seguro de si esto importa, pero antepuse la versión de MAMP en la ruta y volví a ejecutar el script de instalación. Parece instalar los archivos de WordPress en /tmp/
de todos modos. Mismo error cuando ejecuto phpunit
Nikita Zernov
Si está utilizando MAMP, el problema puede ser relevante para la configuración de su servidor MySQL. Asegúrate de revisar Allow network access
opción en la configuración de MAMP:
Actualización 1
Crear phpinfo.php
archivo en su directorio raíz (generalmente /Applications/MAMP/htdocs
para MAMP). Pegue el siguiente contenido:
<?php phpinfo() ?>
Luego revisa el Loaded Configuration File
propiedad. Ábrelo usando nano
u otro editor de texto en la terminal. Luego encuentra y cambia estas 3 propiedades.pdo_mysql.default_socket
, mysql.default_socket
, mysqli.default_socket
a su archivo de socket.
referenciado desde http://maccrazy.com/lion-upgrade-killed-my-php-site-and-how-i-arreglado
-
¿Se puede configurar la radio en “Solo desde esta Mac”?
– emersonthis
20 de agosto de 2015 a las 19:19
-
Si necesita poder conectarse a MySQL localmente, elija
only from this Mac
de lo contrariofrom other computers
– Nikita Zernov
20 ago 2015 a las 19:20
-
para que pueda correr
wp db tables
y funciona. Pero cuando corrophpunit
devuelve la pantalla “No se puede conectar a la base de datos”…– emersonthis
20 de agosto de 2015 a las 19:24
-
¿Wordpress funciona? ¿Se conecta a la base de datos MySQL?
– Nikita Zernov
20 de agosto de 2015 a las 19:27
-
Creo que sí. Recien agregado Actualización 2 anterior, que elabora
– emersonthis
20 de agosto de 2015 a las 19:28
finalmente lo conseguí phpunit
¡¡correr!!
No pude encontrar esto documentado en cualquier sitio…
En algún momento durante el proceso de instalación, los archivos principales de WordPress se instalan en /tmp/wordpress/
. Que La instalación de WordPress tiene su propio wp-config.php
archivo que tenía valores incorrectos. Cuando corregí esos valores para que coincidieran con los wp-config.php
de mi sitio, phpunit
funcionó sin problemas!
No estoy seguro de cómo sucedió esto, pero mi teoría es que la primera vez que ejecuté el script de instalación con las credenciales incorrectas. Pero luego los corregí (volví a ejecutar el script de instalación varias veces). Pero creo que el script de instalación no sobrescribió los archivos originales.
¡+400 a @Nikita Zernov por tanta ayuda!
Normalmente, si usa ftp o telnet para localhost, obtendrá conection refused
si desea corregir el error, cambie su httpd.conf
a ServerName localhost
Además, si desea realizar un inicio de sesión remoto, intente habilitar el inicio de sesión remoto yendo a
System Preferences -> Sharing -> Remote Login box (check it)
.
Para el problema de MySQL
Asegúrese de que ‘skip-networking’ esté comentado en el archivo de configuración (en este caso /opt/local/etc/mysql55/my.conf
) o al iniciar el servidor mysql, no comienza con ‘–skip-networking’
En el modo de omisión de redes, la instancia de mysql no “escucha las conexiones TCP/IP en absoluto. Toda interacción con mysqld debe realizarse utilizando canalizaciones con nombre o memoria compartida (en Windows) o archivos de socket Unix (en Unix)” de MySql Docs
Espero que ayude
-
MAMP parece tener su propia versión mágica de esa propiedad. En my.cnf veo
MAMP_skip-networking_MAMP
. ¿Crees que debería comentar esto? ¿Cuál es tu teoría?– emersonthis
21 de agosto de 2015 a las 12:46
Por defecto, mamp ejecuta mysql en el puerto 8889. ¿Lo has cambiado? ¿Cuál es la salida de
telnet localhost 3306
?– Aserre
11 de agosto de 2015 a las 13:34
@Ploutox Lo cambié para que MAMP ejecute mysql en el puerto estándar. Agregué la salida de
telnet
a la pregunta anterior.– emersonthis
11 de agosto de 2015 a las 14:25
si importa cual
mysql
esta siendo usado. ¿Intentaste exportar MAMP’s?mysql
ymysqladmin
como se describe aquí? stackoverflow.com/a/29990624/2646526– heenenee
16 de agosto de 2015 a las 15:29
Por favor, compruebe si mysql se ejecuta a través de la Terminal:
ps aux | grep sql
. Además, con este comando puede verificar qué se ejecuta en qué puerto:lsof -i -P | grep -i "listen"
. Si mysql se está ejecutando en el puerto correcto, ¿tiene quizás un firewall que se interpone en su camino? Otra opción, ¿puedes conectarte a mysql si ejecutas el comando?mysql -uroot -p
en la terminal?– Jerik
16/08/2015 a las 20:03
¿Podrías ir a servidor local: 3306 y ver si se descarga un archivo llamado ‘descargar’? De lo contrario, su mysql no se ejecuta en ese puerto (o no se ejecuta en absoluto).
– GuyT
18 de agosto de 2015 a las 11:15