• Publicidad

Problema base de datos mysql

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Problema base de datos mysql

Notapor zeit009 » 2011-06-08 11:37 @525

¡Buenas!

Tengo una problema con la aplicación que estoy desarrollando.

Tengo guardada la parte HTML en: var/www/html; el código de la aplicación en usr/lib/cgi-bin/APP/public y la base de datos la tengo en mi equipo en el escritorio home/user/Escritorio/BD.sql

Este el archivo de configuración de la aplicación APP.conf.perl

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $host="home/user/Escritorio/BD.sql/BD.sql";
  2.  
  3.  $cgiPath="cgi-bin";
  4.  $appPath="APP";
  5.  
  6.  $home = "APP.html";
  7.  
  8.  $dbHost = "home/user/BD.sql/BD.sql";
  9.  $dbName = "BD";
  10.  $dbUser = "root"; // el usuario y el pass que tengo para entrar en mysql
  11.              administrator
  12.  $dbPass = "1234";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4



Este el archivo que hace las llamadas a la BD, APP.Consultar.perl

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3.  
  4. require("APP.conf.perl");
  5.  
  6. $path = $host."/".$cgiPath."/".$appPath."/public";
  7.  
  8. $ipath = $cgiPath."/".$appPath."/img/";
  9.  
  10.  
  11.  
  12.  
  13.  use DBI;
  14.  $db = DBI->connect("DBI:mysql:$dbName:$dbHost", "$dbUser", "$dbPass");//linea 14
  15.  
  16.  $q = "SET NAMES utf8";
  17.  $s = $db->prepare($q) or die "Prepare error: $db->errstr\n"; //linea 17
  18.  $rv = $s ->execute() or die "Execute error: $s ->errstr\n";
  19.  
  20.  $q = "SET CHARACTER SET utf8";
  21.  $s = $db->prepare($q) or die "Prepare error: $db->errstr\n";
  22.  $rv = $s ->execute() or die "Execute error: $s ->errstr\n";
  23.  
  24. $traza = 0;
  25.  
  26.  #$id = 0;
  27.  
  28.  &top_html();
  29.  &entrada();
  30.  &ejecucion();
  31.  &control_i_mostrar();
  32.  &bottom_html();
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Estos son los errores que me da el log de Apache:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[Wed Jun 08 18:11:31 2011] [error] [client 127.0.0.1] DBI connect('mcr7:home/user/Escritorio/DB.sql/DB.sql','root',...) failed: Unknown MySQL server host 'h
ome/user/Escritorio/DB.sql/DB.sql' (1) at /usr/lib/cgi-bin/APP/public/APP.consult.perl line 14

[Wed Jun 08 18:11:31 2011] [error] [client 127.0.0.1] Can't call method "prepare
" on an undefined value at /usr/lib/cgi-bin/APP/public/APP.consult.perl line 17


[Wed Jun 08 18:11:31 2011] [error] [client 127.0.0.1] Premature end of script he
aders: APP.consult.perl
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Alguien sabe dónde está el problema? ¿No tengo bien puesto el host de la BD? ¿O me falta algún paquete?
Bueno a ver si alguien me puedo echar una mano.

¡Muchas Gracias!
¡Un saludo!
zeit009
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-03-30 11:58 @540

Publicidad

Re: Problema base de datos mysql

Notapor explorer » 2011-06-08 12:49 @576

El host se refiere a la máquina, no al sistema de ficheros donde está la base de datos.

Si la máquina es la propia máquina donde estás trabajando, llámalo localhost:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $dbHost = 'localhost';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sino, tendrás que poner el nombre o IP del servidor (máquina) que está ejecutando el motor MySQL.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema base de datos mysql

Notapor zeit009 » 2011-06-08 21:38 @943

¡Hola!

Gracias, explorer, por la respuesta. Pero aun sigo teniendo algunos problemas.

He cambiado parte del archivo APP.conf.perl (cambiando también la línea de código que me has comentado porque sí que estoy trabajando sobre mi propia máquina).

La carpeta de la base de datos se llama BD7.sql y el archivo que contiene los datos se llama también BD7.sql
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $host= "/var/lib/mysql"; //he decidido meter la base de datos aquí (porque por lo que he leído es mejor que este ahí que en el escritorio como la tenía antes) var->lib->mysql->BD7.sql->BD7.sql
  2.  
  3.  $cgiPath="cgi-bin";
  4.  $appPath="APP8"; //este es el nombre de la carpeta que esta en cgi-bin->APP8->Public-> y aquí dentro está el APP.conf.perl y el APP.consult.perl
  5.  
  6.  $home = "APP.html"; //Este archivo lo tengo en var->www->html->APP5->aux-> y aqui tengo el APP.html
  7.  
  8.  $dbHost = "localhost"; // esto lo he puesto como me has dicho (no sé si influye poner las comillas o ¿tiene que ser comilla simple?)
  9.  $dbName = "BD7";
  10.  $dbUser = "root";
  11.  $dbPass = "ABCabc1234";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pongo también el archivo /etc/mysql/my.cnf (lo tengo como me venía, solo he añadido el password y el pid-file)

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
password = "ABCabc1234"


[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]


user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log

expire_logs_days = 10
max_binlog_size = 100M

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]

[isamchk]
key_buffer = 16M

!includedir /etc/mysql/conf.d/

Bueno, pues sigo teniendo estos errores:
[Thu Jun 09 04:19:47 2011] [error] [client 127.0.0.1] DBI connect('BD7:localhost','root',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at /usr/lib/cgi-bin/APP8/public/APP.consult.perl line 14

(y tengo instalado el mysql-server y mysql-client... pero no me crea el archivo mysqld.sock... de hecho, cuando pongo en la consola mysqld me sale este mensaje --> 110609 4:23:23 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110609 4:23:23 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
110609 4:23:24 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
)


[Thu Jun 09 04:19:47 2011] [error] [client 127.0.0.1] Can't call method "prepare" on an undefined value at /usr/lib/cgi-bin/APP8/public/APP.consult.perl line 18.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. require("APP.conf.perl");
  4.  
  5. $path = $host."/".$cgiPath."/".$appPath."/public";
  6.  
  7. $ipath = $cgiPath."/".$appPath."/img/";
  8.  
  9.  
  10.  
  11.  
  12.  use DBI;
  13.   $db = DBI->connect("DBI:mysql:$dbName:$dbHost", "$dbUser", "$dbPass");
  14.  
  15.  
  16.  $q = "SET NAMES utf8";
  17.  $s = $db->prepare($q) or die "Prepare error: $db->errstr\n"; //linea 18
  18.  $rv = $s ->execute() or die "Execute error: $s ->errstr\n";
  19.  
  20.  $q = "SET CHARACTER SET utf8";
  21.  $s = $db->prepare($q) or die "Prepare error: $db->errstr\n";
  22.  $rv = $s ->execute() or die "Execute error: $s ->errstr\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


[Thu Jun 09 04:19:47 2011] [error] [client 127.0.0.1] Premature end of script headers: APP.consult.perl

No sé lo que pasa, he estado haciendo varias pruebas, y nada. A ver si alguien con los nuevos datos que he puesto me puede ayudar o por lo menos orientarme por dónde está el problema.

¡Muchas Gracias!
¡Saludos!
zeit009
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-03-30 11:58 @540

Re: Problema base de datos mysql

Notapor explorer » 2011-06-09 17:11 @757

Antes de nada: los comentarios, en Perl, no se ponen con '//', sino con '#'.

Luego, el mensaje de error dice que mysqld no tiene los permisos necesarios para crear el árbol de ficheros en donde quiere trabajar.

¿En qué sistema operativo estás? Parece que MySQL no está bien instalado. ¿Cómo lo instalaste?

El mensaje de error puede significar también que estás intentando arrancar mysqld como un usuario normal. Y lo normal es que, en una máquina, solo sea el root del sistema el que pueda hacerlo, y con una instrucción semejante a:

/etc/init.d/mysql restart

Para comprobar que está bien instalado, puedes ejecutarlo con la opción 'status':
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. root@neoris1:~# /etc/init.d/mysql
  2. Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload|status
  3. root@neoris1:~# /etc/init.d/mysql status
  4. /usr/bin/mysqladmin  Ver 8.42 Distrib 5.1.49, for debian-linux-gnu on x86_64
  5. Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
  6. This software comes with ABSOLUTELY NO WARRANTY. This is free software,
  7. and you are welcome to modify and redistribute it under the GPL license
  8.  
  9. Server version          5.1.49-1-log
  10. Protocol version        10
  11. Connection              Localhost via UNIX socket
  12. UNIX socket             /var/run/mysqld/mysqld.sock
  13. Uptime:                 12 days 6 hours 51 min 42 sec
  14.  
  15. Threads: 39  Questions: 19307697  Slow queries: 11666  Opens: 3804  Flush tables: 1  Open tables: 1030  Queries per second avg: 18.189.
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
La primera ejecución de /etc/init.d/mysql sirve para saber los comandos que podemos ejecutar con él. Y la última línea da una serie de estadísticas, indicando que el motor de base de datos ya está arrancado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema base de datos mysql

Notapor zeit009 » 2011-06-10 12:45 @573

¡Gracias, explorer!

El sistema operativo que utilizo es Ubuntu 10.10 (lo tengo instalado utilizando Oracle VM VirtualBox) e instalé MySQL utilizando: sudo apt-get install mysql-server mysql-client.

Ya he encontrado el problema. No tenía bien cargada la base de datos. Lo he solucionado entrando en MySQL a través de la consola: mysql -u root -p; luego he puesto mysql> show databases y he comprobado que no estaba mi base de datos. Finalmente he tenido que cargar la base de datos otra vez a través de la consola y ya me funciona... por ahora.

¡Saludos!
zeit009
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-03-30 11:58 @540


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados