IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Pb transfert bdd MySQL 5 => MySQL 3


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 29
    Points
    29
    Par défaut Pb transfert bdd MySQL 5 => MySQL 3
    Bonsoir,

    je dois transférer une base de donées de la version 5 de mysql à la version 3.23 (je bossais en local sur la version 5 et je vient de voir que mon hébergeur n'a que la version 3.23 )

    Il s'agit d'une bdd qui va gérer une module de news.

    Mon problème, c'est quand je fais les test online, c'est-à-dire que j'ecris une news et que je l'envoye dans la base, rien ne se passe, j'ai l'impression que mon code ne communique pas ou mal avec la bdd, alors qu'en local, tout marchais parfaitement

    Voilà le code de ma base en mysql 5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    -- phpMyAdmin SQL Dump
    -- version 2.9.0
    -- http://www.phpmyadmin.net
    -- 
    -- Serveur: localhost
    -- Généré le : Mardi 21 Novembre 2006 à 19:43
    -- Version du serveur: 4.1.21
    -- Version de PHP: 4.4.4
    -- 
    -- Base de données: `...`
    -- 
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `news`
    -- 
     
    CREATE TABLE `news` (
      `id` int(11) NOT NULL auto_increment,
      `titre` varchar(250) collate latin1_german1_ci NOT NULL default '',
      `contenu` text collate latin1_german1_ci NOT NULL,
      `datetime` datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (`id`),
      UNIQUE KEY `id` (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci COMMENT='Table pour un module de news' AUTO_INCREMENT=91 ;
     
    -- 
    -- Contenu de la table `news`
    --
    et voici celui que j'ai modifié afin d'être compatible avec mysql 3.23 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    # phpMyAdmin SQL Dump
    # version 2.5.5-pl1
    # http://www.phpmyadmin.net
    #
    # Serveur: 192.168.10.3
    # Généré le : Mardi 21 Novembre 2006 à 19:45
    # Version du serveur: 3.23.52
    # Version de PHP: 4.3.6
    # 
    # Base de données: `...`
    # 
     
    # --------------------------------------------------------
     
    #
    # Structure de la table `news`
    #
     
    CREATE TABLE `news` (
      `id` int(11) NOT NULL auto_increment,
      `titre` varchar(250) NOT NULL default '',
      `contenu` text NOT NULL,
      `datetime` datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (`id`),
      UNIQUE KEY `id` (`id`)
    ) TYPE=MyISAM COMMENT='Table pour un module de news' AUTO_INCREMENT=91 ;
     
    #
    # Contenu de la table `news`
    #
    la notion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    collate latin1_german1_ci NOT NULL
    a donc du être effacée, et je pense que le problème est la...

    Qu'en pensez-vous ?

    Auriez-vous une solution afin de "traduire" cette notion en mysql 3.23 ?



    [Titre modifié par Maximilian]

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par alpking

    la notion collate latin1_german1_ci NOT NULL a donc du être effacée, et je pense que le problème est la...
    Non, a priori, cela n'a rien à voir. La collation (interclassement) affecte la façon dont les conditions sont appliquées, mais pas l'insertion (sauf clé unique sur les colonnes de texte, mais ça n'est pas le cas).

    Citation Envoyé par alpking
    Qu'en pensez-vous ?
    Que le problème doit plutôt être dans la façon dont ton code PHP se connecte à la base et envoie la requête d'insertion, ou bien dans l'écriture de cette requête elle-même...

    --
    Antoun

    Guide complet MySQL 5, par Antoine Dinimant, éd. MicroApplication
    http://www.microapp.com/livre_mysql_7873.html

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    ok merci Autoun pour tes précisions...

    alors voici mon code pour me connecter àl la bdd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $mysql_connexion = mysql_connect("192.168.10.3", "abc", "def"); // Connexion à MySQL
    $mysql_selection = mysql_select_db("mabddnews"); // Sélection de la base 
     
    ?>
    et voici la requete d'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    include "includes/connection_clients.php";
     
    if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
    {
        // On récupère les infos de la correspondante
        $retour = mysql_query('SELECT * FROM news WHERE id=' . $_GET['modifier_news']);
        $donnees = mysql_fetch_array($retour);
     
        // On place le titre et le contenu dans des variables simples
        $titre = $donnees['titre'];
        $contenu = $donnees['contenu'];
        $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
    }
    else // C'est qu'on rédige une nouvelle news
    {
        // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
        $titre = '';
        $contenu = '';
        $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
    }
    ?>
        <form action="list_news_clients.php" method="post">
          <input type="text" size="30" name="titre" value='<?php echo $titre; ?>' />
          <textarea name="contenu" cols="50" rows="10" wrap="physical"><?php echo $contenu; ?></textarea><br />
          <input type="hidden" name="id_news" value='<?php echo $id_news; ?>' />
          <input type="submit" value="ENVOYER" />
        </form>

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    euh... il n'y a aucune requête d'insertion dans le code que tu me donnes...

    S'il y en a une ailleurs, ajoutes un OR DIE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query("INSERT...", $conn) or die mysql_error($conn) ;
    Si n'y en a pas... ne cherche pas plus loin

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    effectivement il n'y a aucune requête sur cette page, mais comme tu vois une fois le formulaire rempli et envoyer, la methode POST dirige l'utilisateur vers list_news_clients.php.

    Et dans ce script il y a une requête, la voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?php
    include "includes/connection_clients.php";
    //-----------------------------------------------------
    // Vérification 1 : est-ce qu'on veut poster une news ?
    //-----------------------------------------------------
     
    if (isset($_POST['titre']) AND isset($_POST['contenu']))
    {
        $titre = addslashes($_POST['titre']);
        $contenu = addslashes($_POST['contenu']);
        $date = date("Y-m-d G:i:s");
        // On vérifie si c'est une modification de news ou pas
        if ($_POST['id_news'] == 0)
        {
            // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
            mysql_query("INSERT INTO news (titre, contenu, datetime) VALUES('$titre', '$contenu', CAST('$date' AS DATETIME))");
        }
        else
        {
            // C'est une modification, on met juste à jour le titre et le contenu
            mysql_query("UPDATE news SET titre='$titre', contenu='$contenu' WHERE id=".$_POST['id_news']);
        }
    }
     
     
    //--------------------------------------------------------
    // Vérification 2 : est-ce qu'on veut supprimer une news ?
    //--------------------------------------------------------
     
    if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
    {
        // Alors on supprime la news correspondante
        mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news']);
    }
    ?>

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    bon j'ai rajouté un or die à ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //-----------------------------------------------------
    // Vérification 1 : est-ce qu'on veut poster une news ?
    //-----------------------------------------------------
    
    if (isset($_POST['titre']) AND isset($_POST['contenu']))
    {
        $titre = addslashes($_POST['titre']);
        $contenu = addslashes($_POST['contenu']);
        $date = date("Y-m-d G:i:s");
        // On v&eacute;rifie si c'est une modification de news ou pas
        if ($_POST['id_news'] == 0)
        {
            // Ce n'est pas une modification, on cr&eacute;e une nouvelle entr&eacute;e dans la table
            mysql_query("INSERT INTO news (titre, contenu, datetime) VALUES('$titre', '$contenu', CAST('$date' AS DATETIME))") or die(mysql_error());
        }
        else
        {
            // C'est une modification, on met juste &agrave; jour le titre et le contenu
            mysql_query("UPDATE news SET titre='$titre', contenu='$contenu' WHERE id=".$_POST['id_news']);
        }
    }
    et voila ce qu'il me dit quand je l'exécute :

    You have an error in your SQL syntax near '('2006-11-22 15:51:23' AS DATETIME))' at line 1
    que faire ?

    merci d'avance de votre aide

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    CAST n'existe qu'à partir de la version 4.0 (cf doc.). Ceci dit, il est inutile et '$date' devrait faire l'affaire.

    --
    Antoun

    Guide complet MySQL 5, par Antoine Dinimant, éd. MicroApplication
    http://www.microapp.com/livre_mysql_7873.html

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    merci Antoun de tes précisions, j'ai remplacé le CAST par NOW() et tout marche parfaitement...

    merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert BDD - Access _ MySQL
    Par Ojiuiookojbezib dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/03/2014, 12h40
  2. Synchroniser deux bdd Sql server et mysql
    Par youcef81 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/03/2012, 12h18
  3. Lister les BDD de mon serveur MySql
    Par garthos dans le forum JDBC
    Réponses: 4
    Dernier message: 02/11/2007, 18h02
  4. transfert bdd mysql
    Par nawal106 dans le forum Administration
    Réponses: 3
    Dernier message: 25/09/2006, 08h19
  5. Transfert bdd MySQL >> message d'erreur !?
    Par bodybug dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/02/2006, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo