mysql41 Duplicate entry [ resolu] - Installation - Linux et OS Alternatifs
Marsh Posté le 27-10-2006 à 15:20:23
DELETE from nom-de-ta-table;
efface les données de la table concernée
Marsh Posté le 27-10-2006 à 15:27:56
Le probleme est que j'ai 12 bases de donnée et une centaine de tables et que tout marchait bien. Peut-on faire une identification ?
Marsh Posté le 28-10-2006 à 19:19:44
J'ai crée une directory mysql. J'y ai mis seulement la table mysql
J'ai toujours le même problème ......
Marsh Posté le 28-10-2006 à 22:19:19
memaster62 > j'ai retiré toutes les tables.
J'ai supprimé /var/lib/mysql
J'ai désinstallé mysql41
J'ai réinstallé
J'ai toujours le problème. je suis vert
# mysqld |
Marsh Posté le 29-10-2006 à 09:21:32
Donnes des infos sur ta conf ça pourrait aider !
Et ton mysql, tu l'installes comment ? C'est un paquetage de ta distrib ?
Personnellement je pense qu'il suffit de lire le message d'erreur pour comprendre ce qui se passe.
Edit: je pensais bien avoir vu un pb lié pas loin, c'est toi qui posait la question pour désinstaller Mysql dans un autre topic!
Si tu es sous Mandriva 2007, tu devrais démarrer mysql par le script approprié plutot que de le lancer "à la gorêt":
/etc/init.d/mysqld start
Marsh Posté le 29-10-2006 à 17:10:37
Oui j'ai un autre fil ouvert pour en principe examiner un problème avec java, mais tout de suite après, j'ai eu ce nouveau problème avec mysql. Ca fait un peu double emploi mais c'est provisoire.
Je reviens à mysql.
C'est le package installé avec urpmi mysql41 ( version 4 )
Voici les messages:
$ mysqld |
En root:
# /etc/init.d/mysqld start |
Je peux ajouter
Je n'ai pas d'autre mysqld qui tourne. Voici les fichiers qu'il y a dans /var/lib/mysql/
/var/lib/mysql/mysql.sock = 0octet
ib_logfile0 = 5Mo
ib_logfile1 = 0octets
ibdata1 = 10 Mo
# mysqld |
mysqld n'est pas une methode goret mais plutot un mode debug.
Voila ou j'en suis pour l'instant.
Marsh Posté le 30-10-2006 à 09:12:18
A tout hasard. J'ai essayé d'installer bind puisque mysqld en parle .
# rpm -qa | grep bind
ypbind-1.19.1-4mdv2007.0 |
Mais ça ne change rien.
Marsh Posté le 30-10-2006 à 09:22:42
thierryR a écrit : Oui j'ai un autre fil ouvert pour en principe examiner un problème avec java, mais tout de suite après, j'ai eu ce nouveau problème avec mysql. Ca fait un peu double emploi mais c'est provisoire.
|
installer bind ça sert à rien, "binder" c'est se lier à un port. En l'occurence un autre programme l'utilise déjà.. probablement un mysql
et mysql il faut le lancer avec les droits de l'utilisateur mysql (ou mysqld_safe en root et il passera le reste en utilisateur mysql tout seul)
Marsh Posté le 30-10-2006 à 09:36:48
Effectivement ça change de message. Mais peut-être pourrais-tu comprendre ce qui ce passe.
# mysqld_safe
Starting mysqld daemon with databases from /var/lib/mysql |
C'est quoi les "pid"
Marsh Posté le 30-10-2006 à 09:43:03
thierryR a écrit : Effectivement ça change de message. Mais peut-être pourrais-tu comprendre ce qui ce passe.
|
process identification,
Marsh Posté le 30-10-2006 à 09:49:26
Je crois qu'on arrive.
# cd /var/run/mysqld/
# ls
#
Le fichier n'existe pas.
Marsh Posté le 30-10-2006 à 09:56:11
thierryR a écrit : Je crois qu'on arrive. |
c'est normal qu'il n'existe pas si mysql server n'est pas lancé.
c'est un fichier temporaire dans lequel le init inscrit le numero d'identification du processus (le pid) de mysqld.
tout ce qui est dans /var/run sers à identifier les processus lancés quelsqu'ils soient.
il faut que tu touches un peu au system pour comprendre...
Marsh Posté le 30-10-2006 à 10:01:17
Ca explique pourquoi la derniere experience m'a surpris
J'ai créé un mysqld.pid artificiel.
J'ai tenté de démarré mysqld
Mon fichier à disparu.
Donc tout est correct sauf que ça ne démarre pas.
Il y aurait une autre instance mysql déja démarrée mais si je fais un "ctrl+esc" sur kde je ne trouve rien dans tout ce qui est lancé qui ressemble à mysql
Marsh Posté le 30-10-2006 à 10:04:56
thierryR a écrit : Ca explique pourquoi la derniere experience m'a surpris |
c'est possible que tu ai deja un mysql server qui demarre au boot de ta machine.
pour le savoir essaye :
#service mysqld status
ou
#service mysql status
ou
regarde un netstat si le port 3306 est en ecoute via cette commande
#netstat -laputen
qui te donnera toutes les liaisons entre les ports en ecoute et les demons qui s'en servent.
Marsh Posté le 30-10-2006 à 10:16:56
Un truc que je découvre.
# service mysqld status
mysqld est mort, mais le sous-système reste verrouillé |
# netstat -laputen | grep 3306
#
Personne sur ce port
Marsh Posté le 30-10-2006 à 10:24:48
le pb peut provenir de mysql.sock (le fichier de verrouillage), il se trouve dans /var/lib/mysql
autrement dit ton nouveau processus de mysqld ne parvient pas à faire ce qu'il veut avec ce fichier,
peut être n'a t'il pas le droit d'ecrire dedans ou quelquechose comme ça. c'est pour ça également
que le systeme croit qu'il y a deja un mysql de demarré sur le systeme, c'est à cause
de ce fichier de sock (p'tain de chaussettes )
tu peux essayer d'editer le fichier /etc/my.cnf (deja essaye de comprendre
à quoi sers ce fichier la, il est très bien documenter un peu partout) pour donner un autre nom à ce fichier mysql.sock afin
que ton instance soit complètement nouvelle.
Marsh Posté le 30-10-2006 à 10:41:40
my.cnf me renvoie vers un fichier de logs.
J'ai donc visité le fichier en question
/var/log/mysqld/mysqld.log
061030 10:35:12 mysqld started |
J'ai donc vérifié la directory.
# ls -lF /root
total 8
drwx------ 2 root root 4096 oct 9 19:46 drakx/
drwxrwxrwx 2 root root 4096 oct 30 10:35 tmp/
Connais-tu l'erreur 13
Marsh Posté le 30-10-2006 à 10:45:37
et on voit clairement que mysqld ne peut pas créer de répertoire tmp dans /root,
ce qui me semble une erreur "normale".
il faut que tu te "debrouilles" pour demander au script de mysqld (via le fichier /etc/my.cnf)
d'aller créer mysql.sock quelquepart où il aura les droits de faire ce qu'il veut.
edit : ton mysqld ne demarre pas avec les droits root mais avec les droits d'un utilisateur nommé mysql.
surtout ne donne pas les droits à mysql d'aller ecrire quelquechose dans /root (attention à la faille de secu ).
Marsh Posté le 30-10-2006 à 13:30:13
Se pourrait-il que mysqld ne se serve pas de my.cnf. ?
Je m'explique.
La directory /root/tmp/ n'existe pas dans my.cnf
[mysqld] |
Marsh Posté le 30-10-2006 à 14:03:22
thierryR a écrit : Se pourrait-il que mysqld ne se serve pas de my.cnf. ?
|
bah, c'est possible, il faut regarder le script de demarrage du deamon
dans /etc/rc.d/init.d
mais je dirais normalement, il doit l'utiliser
et effectivement, on se demande bien ce qu'il fait comme acces dans /root/tmp
essaye alors d'activer le demarrage de mysqld au boot de linux (dans les options de service)
et regarde à nouveau le mysql.log
Marsh Posté le 30-10-2006 à 17:05:12
c'est énervant lorsque l'on dit à quelqu'un de ne pas lancer mysql directement avec mysqld, et que dans un autre topic il le fait ...
tu jeterais un oeil au script de démarrage et tu verrais que pas mal de choses et paramètres sont fournient à mysqld, et que lancer sans ces paramètres ne peut que créer la confusion ...
tu essayes d'aller trop vite thierryR et tu fais pleins de bétises ...
Marsh Posté le 30-10-2006 à 17:10:04
le deamon dans /etc/rc.d/init.d fait bien appel à my.cnf et en aucun cas on ne parle de /root/tmp/
voici ce qui se passe au démarrage
061030 16:59:52 mysqld started |
dans /var/lib/mysql/ j'ai ib_logfile0 de 5Mo
et ib_logfile1 de 0 octet
Marsh Posté le 30-10-2006 à 18:13:50
Ca y est ça marche
J'ai viré ibdata1, ib_logfile0 et ib_logfile1
J'ai redémaré et tout fonctionne.
Ce sont 3 fichiers binaire qui sont générés automatiquement.
Merci a tous les contributeurs de ce fil.
Marsh Posté le 30-10-2006 à 20:26:24
Tu devrais peut être modifier my.cnf et virer log-bin=mysql-bin
Marsh Posté le 30-10-2006 à 21:08:05
Ben.... Je ne le trouve pas dans le fichier
[mysqld] |
Marsh Posté le 31-10-2006 à 16:28:20
c'est pour mysql 5 alors, c'est vrai que tu utilises mysql4
Marsh Posté le 31-10-2006 à 16:45:18
Bizarre. Suite à la suppression ils se sont recréés ! Je ne sais pas à quoi ils servent si ce n'est faire un beau blocage...
Marsh Posté le 31-10-2006 à 17:11:50
c'est bien mysql4 que tu utilises ?
tu éteins correctement mysql avec la commande "service", et tu lances mysql avec al commande "service" ? ou avec /etc/initd.d/mysql ?
http://mysql.org/doc/refman/4.1/en/binary-log.html
Marsh Posté le 31-10-2006 à 17:32:16
C'est pas le 4 mais pas le 5
$ rpm -qa | grep -i mysql
MySQL41-4.1.19-1mdv2007.0 |
Marsh Posté le 31-10-2006 à 18:49:40
excuse mais tu utilises mysql 4 ...
à part libmysql15, tout le reste concerne mysql 4.1
Marsh Posté le 31-10-2006 à 21:49:25
C'est la 4.1 qui doit être abandonnée officiellement, parait-il.
On a donc un service mysqld que la 4 n'a pas.
Vu mes nombreux déboires, je ne pense pas me tromper entre les versions.
Et pour libmysql15 regarde ....
# urpme libmysql15-5.0.24a-2mdv2007.0
Pour satisfaire les dépendances, les 6 paquetages suivants vont être désinstallés (48 Mo): |
Marsh Posté le 27-10-2006 à 15:09:40
Bonjour. Je ne sais pas ce qui s'est passé?
J'ai voulu utilise mysql41
Le serveur à bloqué
Après bien des recherches j'ai fini par désinstaller, renommer la table mysql
puis réinstaller
voici le message que j'ai eu avec urpmi
ERROR: 1062 Duplicate entry 'localhost-root' for key 1
ERROR: 1062 Duplicate entry 'localhost-' for key 1
donc si je continue.
# mysqld
061027 13:18:58 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
061027 13:18:58 [ERROR] Aborting
061027 13:18:58 [Note] mysqld: Shutdown complete
Le problème est comment retirer ces entrées?
Message édité par thierryR le 30-10-2006 à 18:14:17
---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/