Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » Bases de Datos » ERROR 2002 (HY000) Responder al tema
Nuevo tema


Página 1 de 1  [ 15 mensajes ] 
 
Nota 2008-08-07 15:33 @690

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
ERROR 2002 (HY000)
Hola a todos, soy yo de nuevo :?

Estoy corriendo mi script que conecta a una base de datos, pero me sale este error :

Código:
DBI connect('database=base','root',...) failed: Can't connect to loc MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at cone.pl le 14


y en mi linea 14 tengo:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
my $dbh = DBI->connect($connectionInfo,$userid,$pass,
                        {'RaiseError' => 1});


Ahora en mi $userid, tengo el usuario y en mi $pass no tengo nada, porque la base de datos no posee contraseña de acceso, estoy usando MySQL, y por si acaso sí tengo levantada la base, ahora cuando voy a ver a la dirección que me sale ahí el archivo mysql.sock no aparece, se encuentra en otra dirección... pero leyendo encontré que se puede cambiar la dirección en my.cnf, y lo hice, le puse una nueva dirección pero sigue apuntando a la que me sale en el error y no sé dónde más cambiarle. plis, ayuda :shock:


Nota 2008-08-07 15:46 @698
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Cuando dices que está levantada la base de datos, se supone que mysql server ha sido arrancado.

Deberías ver el resultado en /var/log/mysql.log (o donde esté definido en my.cnf).

Es posible que en my.cnf no esté permitido que mysql server cree conexiones de ese tipo. Tendrás que revisar las secciones [client] y [mysqld] para comprobar que apuntan al mismo sitio.

Más información, en los foros de MySQL.

_________________
JF^D Perl programming


Nota 2008-08-07 15:51 @702

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
Te cuento... que traté de ir a ver el log de mysql en la dirección que me dijiste... pero no está en ningún archivo que se llame mysql.log o algo parecido :(

y cuando me dices esto
Citar:
Es posible que en my.cnf no esté permitido que mysql server cree conexiones de ese tipo.


¿¿Te refieres a la conexión entre mi script y la base de datos??


Nota 2008-08-07 16:20 @722
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
La posición del registro de actividad (log) está definida en la entrada log en la sección [mysqld] del my.cnf (aunque también depende un poco de la versión del MySQL que tengas instalado).

_________________
JF^D Perl programming


Nota 2008-08-07 16:40 @736

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
He estado buscando el log como loca y no lo encuentro así que busqué por si acaso el my.cnf y resulta que tengo dos :? uno en /etc/my.cnf y otro en /opt/lampp/etc/my.cnf, ahora en el /etc/my.cnf tengo esto:

Código:
[mysqld]
datadir=/var/lib/mysql
socket=/opt/lampp/var/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


Si te puedes dar cuenta la dirección del socket, bueno esa la cambié yo, para ver si reparaba el error y nada, mmm antes tenía la dirección /var/lib/mysql/mysql.sock, y también ahí indican la dirección del log, pero al ir a esa dirección no aparece para nada :shock:

Ahora en el otro my.cnf, está más completo y tiene esto

Código:
# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket          = /opt/lampp/var/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port            = 3306
socket          = /opt/lampp/var/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# The replication master for this slave - required
#master-host     =   <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user     =   <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password =   <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port     =  <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin


# Point the following paths to different dedicated disks
#tmpdir         = /tmp/
#log-update     = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
#bdb_cache_size = 4M
#bdb_max_lock = 10000

# Comment the following if you are using InnoDB tables
skip-innodb
innodb_data_home_dir = /opt/lampp/var/mysql/
innodb_data_file_path = ibdata1:10M:autoextend

# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


Cabe recalcar que solo publiqué lo relevante porque lo demás es comentarios de ese archivo, ahora no sé cómo hacer para que Linux me lea el my.cnf de /opt/lampp/etc/ y no el otro ¿o debería ser al revés? :?


Nota 2008-08-07 17:58 @790
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
¿Lo ves? Te lo avisé hace meses... el instalar el XAMPP no te ha traído más que desgracias...

El oficial es el que está en el /etc/.

Yo reinstalaría todo el Linux... sin el XAMPP.

:-(

_________________
JF^D Perl programming


Nota 2008-08-11 08:55 @413

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
¡¡¡Disculpa la demora, explorer!!!

¡¡¡Gracias por la sugerencia!!! pero, créeme que a estas alturas no puedo darme el lujo de hacer eso... o sea, ¿que tu lo ves como que ya no hay solución??? :S


Nota 2008-08-11 10:14 @468
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Sí que hay solución. Y fácil.

Con un poco de paciencia se puede dejar funcionando. Depende de la destreza y experiencia del administrador del sistema. :) Sin tener que reinstalar nada.

Hay que ir servicio por servicio, ver dónde se arrancan, cómo, qué ficheros de configuración usan, que ficheros de datos leen y escriben, qué puertos abren, etc.

Instalar software preconfigurado como el XAMPP, está bien, pero hay que tener cuidado con lo que va a 'pisar'.

Es como si estuviéramos en Windows e instaláramos el Microsoft Office para poder grabar los documentos en formato Word, sin darnos cuenta de que ya teníamos instalado el Open Office y esa función ya la realizaba. Y la presencia de Microsoft Office modifica el comportamiento de todo el sistema de tal forma que impide que los .doc se abran con el OOffice con un sencillo doble click. El usuario del equipo, que normalmente usaba esa acción, ahora se encuentra con una desagradable sorpresa.

Te recomiendo: paciencia, leer mucho, apuntar a un foro de Linux, y hacer un curso de administración de sistemas Linux. Hoy en día se valora mucho esa titulación.

_________________
JF^D Perl programming


Nota 2008-08-11 16:36 @733

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
Te cuento explorer que encontré la solución :D

Es de poner en el /etc/my.cnf la sección [client]... mmm quedaría de esta forma:

Código:
[client]
#password =
port = 3306
socket = /opt/lampp/var/mysql/mysql.sock

[mysqld]
port = 3306
datadir=/opt/lampp/var/mysql
socket=/opt/lampp/var/mysql/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


pero una vez solucionado... corrí mi script y ya no me sale error de mysql.sock... pero me sale este error... medio raro que no lo entiendo :?

Código:
Usage: $class->connect([$dsn [,$user [,$passwd [,\%attr]]]]) at conex.pl line 14


y en la linea 14 tengo

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
my $dbh = DBI->connect($connectionInfo,$userid,
                        {'RaiseError' => 1});
 


ahora si no le mando el password es porque por el momento no tiene... mmm ¿¿¿alguna sugerencia???


Nota 2008-08-11 17:35 @774

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
una pregunta!!!

existe alguna manera de que dentro de perl pueda especificar donde se encuentra mi mysql.sock?? asi como lo puedo cambiar en el my.cnf??

disculpn la ignorancia


Nota 2008-08-11 18:14 @801
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Si lo mandas junto con la información del host, database, etc. Ejemplo:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
DBI->connect(
"DBI:mysql:host=HOST;database=NOMBREDATABASE;mysql_socket=/tmp/mysql.sock", "USER", "PASS",
{PrintError => 1, RaiseError => 1}
);

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2008-08-11 18:23 @808

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
¡¡kidd!! muchas gracias por ayudarme, ando desesperada, mira hice lo que me pediste... y me salió este error.

Código:
Can't DBI::st=HASH(0x8e3e340)->bind_col(1, undef,...), need a reference to a scalar at /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/DBI.pm line 1831.


:? ¿Qué es? puedes ayudarme, te envío también el script que tengo para que lo veas y me digas si algo anda mal.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
package DBD::mysql;

use strict;

use DBI;

my $db='base';
#my $host='localhost';
#$port="3306";
my $userid='root';
my $pass='';
my $connectionInfo="DBI:mysql:database=$db;mysql_socket=/opt/lampp/var/mysql/mysql.sock";

my $dbh = DBI->connect($connectionInfo, 'root', '', {'RaiseError' => 1});
die "Ha habido un problema al conectar con la base de datos: ".$DBI::errstr unless(defined($dbh));

my $query = "SELECT * FROM admi";

my $sth = $dbh->prepare($query);

$sth->execute();

$sth->bind_columns(undef,my $nombre,my $descripcion);

#print "Resultados";

while($sth->fetch())
{
        print "$nombre - $descripcion";
}

$sth->finish();
$dbh->disconnect;


¿Qué opinas? :?


Nota 2008-08-11 18:30 @812
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
¿Qué narices hace la línea
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
package DBD::mysql;
en el programa?

Anda, por favor, quítala (no te hace falta).

_________________
JF^D Perl programming


Nota 2008-08-11 22:27 @977
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
El error dice que has pasado mal los argumentos a bind_columns(). Y además, estás intentando usar la bind_cols(), que tiene distintos argumentos.

Debes definir ANTES las variables, y luego indicar su referencia:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
my $nombre;
my $descripcion;
$sth->bind_columns(\$nombre,\$descripcion);


Más información, en la descripción de bind_columns() en la página de manual de DBI. Incluye ejemplos.

_________________
JF^D Perl programming


Nota 2008-08-12 08:38 @401

Perlero Nuevo
Registrado: 2008-04-02 14:04 @628
Mensajes: 64
gracias explorer y kidd por la ayuda :D ya me salieron los datos :)


Responder al tema  [ 15 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO