[Debian] Probleme avec Mysql

Résolu
Bonjour,
je suis sous Debian 4.0, J' ai installer Apache 2.2, PHP 5.2 et MySQL 5.0

Et je n'arrive pas a me connecter a ma base de données pour y rajouter des données
Je ne pense pas que sa vienne de mon code source :

mysql_connect("localhost", "root", "");
mysql_select_db("$base");
mysql_query("INSERT INTO `table` VALUES '' , 'nom' , 'message'") or die ("Impossible de se connecter à la base de données");

Ce code m'affiche toujours : Impossible de se connecter à la base de donnée

Mais je ne vois pas pourquoi il ne veut pas se connecter
Une idée ?

PS : je débute sous linux soyer pas trop méchant
Configuration: Indeterminable Indeterminable

15 réponses

Résumé de la discussion

Le problème porte sur une impossibilité de se connecter à la base MySQL et d’y insérer des données via PHP sous Debian, malgré l’utilisation de mysql_connect, mysql_select_db et des requêtes INSERT. Plusieurs réponses soulignent que le problème vient d’un nom de table réservé et de la syntaxe SQL, par exemple l’usage de table comme nom de table nécessitant des backticks. En renommant la table ou en l’encadrant par des backticks, et en ajustant l’INSERT vers des colonnes explicites, l’exemple montre que l’insertion et le select fonctionnent correctement. D’autres précisent que la configuration peut encore influencer, mais que phpMyAdmin ou le terminal montrent généralement une connexion fonctionnelle, ce qui oriente l’erreur vers le nom de la base ou la requête.

Bobot (l’IA à votre service)
  1. Modérateur
    ok, j'ai compris pourquoi
    essai
    <?
    $adresse_serveur_base = 'localhost';
    $login_serveur = 'root';
    $MDP_serveur = '';
    $base = 'dev';
    
    $req = "INSERT INTO `table` VALUES ('nom' , 'message')";
    mysql_connect($adresse_serveur_base, $login_serveur,$MDP_serveur);
    mysql_select_db($base);
    mysql_query($req) or die ("Impossible de se connecter à la base de données");
    ?>


    En fait il faut eviter d'utiliser des mots clés mysql
    Dans ton cas tu as mis le nom de la table "table", mais table c'est un mot clé mysql d'où le conflit

    mysql> create table dev (nom varchar(100), message varchar(500));
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> create table table (nom varchar(100), message varchar(500));
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (nom varchar(100), message varchar(500))' at line 1
    mysql> create table `table` (nom varchar(100), message varchar(500));
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> INSERT INTO table VALUES('aaa','ok');
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table VALUES('aaa','ok')' at line 1
    mysql> INSERT INTO `table` VALUES('aaa','ok');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from table;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table' at line 1
    mysql> select * from `table`;
    +------+---------+
    | nom  | message |
    +------+---------+
    | aaa  | ok      |
    +------+---------+
    1 row in set (0.06 sec)
    
    mysql>
    
    2
    1. <?
      $adresse_serveur_base = 'localhost';
      $login_serveur = 'root';
      $MDP_serveur = '';
      $base = 'dev';

      $req = "INSERT INTO `table` VALUES ('nom' , 'message')";
      mysql_connect($adresse_serveur_base, $login_serveur,$MDP_serveur);
      mysql_select_db($base);
      mysql_query($req) or die ("Impossible de se connecter à la base de données");
      ?>

      marche nikel
      0
  2. Modérateur
    Salut,

    ouvre une console et tape
    mysql -u root -p
    et suis les instructions
    ensuite affiche ce que tu vois à l'écran
    0
    1. mysql -u root -p affiche :

      Enter password:
      Welcome to the MySQL monitor. Commands end with ; or \g.
      Your MySQL connection id is 29
      Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

      Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

      mysql>
      0
  3. je pense que sa vient plus d un probleme de configuration d apache ou de mysql
    0
    1. Salut,

      mysql_connect("localhost", "root", "");
      mysql_select_db("$base");
      mysql_query("INSERT INTO `table` VALUES '' , 'nom' , 'message'") or die ("Impossible de se connecter à la base de données");

      Ce code m'affiche toujours : Impossible de se connecter à la base de donnée


      ok mais c'est le message de retour écrit dans ton script ! Le truc se serait de savoir pourquoi tu ne peux te connecter (mot de passe, etc ....).

      :-))
      0
      1. oui mais comment savoir se qui ne vas pas

        Mais je trouve sa très bizar car via l interface de phpmyadmin ou en ligne de commande j arrive a me connecter
        0
    2. Modérateur
      Salut,

      tu n'as pas messages d'erreur pour la connection à mysql
      c'est plutôt le nom de la base qui pose de problèmes
      que contient $dabase

      essai pour voir

      mysql -u root -p
      Enter password:
      Welcome to the MySQL monitor. Commands end with ; or \g.
      Your MySQL connection id is 29
      Server version: 5.0.32-Debian_7etch1-log Debian etch distribution
      
      Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
      
      mysql> use nomdetabase
      0
      1. $base contient 'dev'

        donc je fais (je pense)

        mysql> use dev
        Reading table information for completion of table and column names
        You can turn off this feature to get a quicker startup with -A

        Database changed
        mysql>
        0
    3. voir aussi pitêtre en indiquant le mot de passe :
      mysql_connect("localhost", "root", "");
      parce que là c'est pas indiqué !

      mais peut-être que je dis des bêtises .....

      :-))
      0
      1. il n est pas indiquer car il n y en a pas
        0
    4. Modérateur
      affiche ton script complet pour voir
      0
      1. <?

        $adresse_serveur_base = 'localhost';

        $login_serveur = 'root';

        $MDP_serveur = '';

        $base = 'dev';

        mysql_connect("$adresse_serveur_base", "$login_serveur", "$MDP_serveur");
        mysql_select_db("$base");
        mysql_query("INSERT INTO `table` VALUES '' , 'nom' , 'message'") or die ("Impossible de se connecter à la base de données");

        ?>
        0
    5. Modérateur
      mysql_query("INSERT INTO nomtable VALUES ('nom','message')") or die ("Impossible de se connecter à la base de données"); 
      `table` c'est quoi?
      mets le nom de la table où tu veux inserer les données
      0
      1. le nom de la table c'est table
        et j ai essayer avec plusieur autre table sa ne marche pas

        en plus le problème n est pas la car je n arrive pas a me connecter a ma base de données depuis un script PHP alors que via phpmyadmin ou avec un terminal il n y a aucun problème

        je pense donc plus a un problème de configuration soit de apache ou mysql (ou peu etre de PHP)
        0
    6. Modérateur
      je pense donc plus a un problème de configuration soit de apache ou mysql (ou peu etre de PHP)

      je ne pense pas
      si tu peux te connecter avec phpmyadmin ça devra te suffire pour enlever cette possibilité

      je crois que c'est plutôt une erreur de syntaxe dans script, d'ailleurs je t'ai donné une possibilité
      essaie ça
      <?
      $adresse_serveur_base = 'localhost';
      $login_serveur = 'root';
      $MDP_serveur = '';
      $base = 'dev';
      
      $req = "INSERT INTO table VALUES ('nom' , 'message')";
      mysql_connect($adresse_serveur_base", $login_serveur,$MDP_serveur);
      mysql_select_db($base);
      mysql_query($req) or die ("Impossible de se connecter à la base de données");
      ?>
      
      0
      1. avec :
        <?
        $adresse_serveur_base = 'localhost';
        $login_serveur = 'root';
        $MDP_serveur = '';
        $base = 'dev';
        
        $req = "INSERT INTO table VALUES ('nom' , 'message')";
        mysql_connect($adresse_serveur_base", $login_serveur,$MDP_serveur);
        mysql_select_db($base);
        mysql_query($req) or die ("Impossible de se connecter à la base de données");
        ?>


        J ai : Parse error: syntax error, unexpected '"' in /var/www/test1.php on line 8

        j enlève l apostrophe

        Et j ai toujours ce maudit
        Impossible de se connecter à la base de données
        0
    7. Modérateur
      affiche aussi le résultat de
      mysql -u root -p
      Enter password:
      Welcome to the MySQL monitor. Commands end with ; or \g.
      Your MySQL connection id is 29
      Server version: 5.0.32-Debian_7etch1-log Debian etch distribution
      
      Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
      
      mysql> use dev
      Reading table information for completion of table and column names
      You can turn off this feature to get a quicker startup with -A
      
      Database changed
      mysql> show tables;
      0
      1. mysql> show tables;
        +---------------+
        | Tables_in_dev |
        +---------------+
        | table |
        +---------------+
        1 row in set (0.00 sec)

        mysql>
        0
    8. Modérateur
      je teste ce script et ça marche sans problèmes chez moi
      <?
      $adresse_serveur_base = 'localhost';
      $login_serveur = 'root';
      $MDP_serveur = 'aaaaaaaa';
      $base = 'dev';
      
      $req = "INSERT INTO personel VALUES ('nom' , 'message')";
      mysql_connect($adresse_serveur_base, $login_serveur,$MDP_serveur);
      mysql_select_db($base);
      mysql_query($req) or die ("Impossible de se connecter à la base de données");
      ?>
      
      affiche
      ps aux | grep mysql
      ls -l /var/lib/mysql
      0
      1. jerome@debian:~$ ps aux | grep mysql
        root 2802 0.0 0.2 2672 1340 ? S Aug04 0:00 /bin/sh /usr/bin/mysqld_safe
        mysql 2839 0.0 3.3 126888 17116 ? Sl Aug04 0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
        root 2840 0.0 0.0 1560 508 ? S Aug04 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
        jeje 15195 0.0 0.4 6920 2504 pts/0 S+ 14:29 0:00 mysql -u root -p
        jeje 15277 0.0 0.1 2880 760 pts/1 R+ 14:31 0:00 grep mysql

        jeje@debian:~$ ls -l /var/lib/mysql
        total 20540
        -rw-r--r-- 1 root root 0 2007-08-04 17:36 debian-5.0.flag
        drwx------ 2 mysql mysql 4096 2007-08-05 14:30 dev
        -rw-rw---- 1 mysql mysql 10485760 2007-08-04 19:03 ibdata1
        -rw-rw---- 1 mysql mysql 5242880 2007-08-04 19:03 ib_logfile0
        -rw-rw---- 1 mysql mysql 5242880 2007-08-04 17:36 ib_logfile1
        drwxr-xr-x 2 mysql root 4096 2007-08-04 19:03 mysql
        -rw------- 1 root root 6 2007-08-04 17:36 mysql_upgrade_info
        jeje@debian:~$
        0
    9. Modérateur
      et
       ls -ld /var/lib/mysql
      0
      1. jeje@debian:~$ ls -ld /var/lib/mysql
        drwxr-xr-x 6 mysql mysql 4096 2007-08-04 20:02 /var/lib/mysql
        0
    10. Modérateur
      tu dis que ce script te donne le message d'erreur?
      <?
      $adresse_serveur_base = 'localhost';
      $login_serveur = 'root';
      $MDP_serveur = '';
      $base = 'dev';
      
      $req = "INSERT INTO table VALUES ('nom' , 'message')";
      mysql_connect($adresse_serveur_base, $login_serveur,$MDP_serveur);
      mysql_select_db($base);
      mysql_query($req) or die ("Impossible de se connecter à la base de données");
      ?>
      0
      1. oui
        et sa commence a m énervé parce que je ne vois pas d ou cela vient
        0
    11. Modérateur
      essaie aussi en ligne de commande
      INSERT INTO table VALUES ('nom' , 'message');
      0
      1. mysql> INSERT INTO table VALUES ('nom' , 'message');
        ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table VALUES ('nom' , 'message')' at line 1

        mysql> INSERT INTO `table` ( `nom` , `message` ) VALUES ('yugjgh', 'jhgjgh');
        Query OK, 1 row affected (0.00 sec)

        J ai pas compris la
        0
      2. j ai modifier mon script

        mysql_connect("localhost", "root", "");
        mysql_select_db("$base");
        
        // On insert les variable dans la base de donnée
        mysql_query("INSERT INTO `table` (  `expediteur`  `message` ) 
        VALUES ( '$nom', '$message')") 
        or die ("Impossible de se connecter à la base de données");
        


        Et maintenant sa marche

        je trouve qu'il est capricieux quand meme

        en tous cas merci a toi lami20j
        0
    12. Modérateur
      je trouve qu'il est capricieux quand meme
      c'est normal quand tu utilises des mots clés mysql pour nommer ta table
      voir le message precédent l'explications avec les commandes

      et n'oublie pas que tu t'es trompé aussi pour la syntaxe de la commande INSERT

      bonne continuation
      0