Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] Out of resources when opening file

Problablement du à un trop grand nombre de sous-requêtes

Sujet résolu
    8 septembre 2010 à 21:53:16

    Bonsoir,

    Je suis en train de développé un petit bot qui parcours le web et sauvegarde des liens dans une base de données.

    Une des partie du boulo du script est de sauvegardé également des informations concernant l'url. Cependant ses informations ne sont pas sur la page elle-même mais sur les pages y faisant référence.

    Tout allait bien, jusqu'au moment ou j'ai eu droit à l'erreur "Out of resources when opening file", après une rapide recherche sur google cette erreur arriverai lorsque l'on fait un dump (ce qui n'est pas mon cas, je suis en train d'insérer des données dans la BDD).

    Cependant je ne fais pas qu'un "bête" INSERT, voici la structure de ma requête:

    INSERT INTO `ma_table` (`id_url`, `infos`) VALUES ((SELECT `id` FROM `urls` WHERE `url` = "http://www.une_url.com"), "infos"), ...
    


    Cette requête fonctionne parfaitement si j'ai une dizaine de values, sauf que lorsque je prend une url (en fait j'explore plusieurs liens à la fois pour économisé du temps, et actuellement ma config est à 8 liens... et j'espérais augmenté cette limite dans le futur...) contenant beaucoup d'informations... bah j'arrive rapidement à un petit millier de VALUES... Et la j'ai en réponse ma fatidique erreur.

    Bref... que puis-je faire ?

    Une idée que j'ai eu serai tout simplement de segmenter la requête, et je suis parfaitement d'accord de le faire, mais combien puis-je insérer au maximum d'informations ?

    Merci pour votre attention.
    Cordialement, La source.
    • Partager sur Facebook
    • Partager sur Twitter
      8 septembre 2010 à 23:33:20

      Créé une table temp que tu remplis avec un gros VALUES et puis fais ton INSERT avec un JOIN sur cette table.
      • Partager sur Facebook
      • Partager sur Twitter
        8 septembre 2010 à 23:54:18

        :euh: Pas sur d'avoir tout compris là... comment je fais pour inséré dans une table temporaire ? puisque le problème est apparement les sous-requêtes... que j'insère les données dans une table ou dans une autre... je vais avoir le même problème :-° .

        Ou alors j'ai pas bien saisi ce que tu veux dire >_<
        • Partager sur Facebook
        • Partager sur Twitter
          9 septembre 2010 à 9:31:48

          Hé bien, d'abord tu insères tout dans une table temporaire (sans faire de sous-requêtes), et puis tu remplaces ton insert avec sous-requêtes multiples par un JOIN entre la table temp et la table urls.
          • Partager sur Facebook
          • Partager sur Twitter
            10 septembre 2010 à 22:17:40

            Désolé du temps de réponse, j'ai eu un impératif ^^

            Merci pour ton aide, j'ai eu du mal à comprendre jusqu’à ce que je trouve que l'on pouvais faire un INSERT ... SELECT

            Bref, j'ai un peu galérer pour construire la requête (vu que les données que j'avais reposais sur plusieurs transformations avant d'arrivé à ce que je voulais obtenir), mais à présent sa marche ;)

            Merci encore.
            Cordialement, La source.
            • Partager sur Facebook
            • Partager sur Twitter

            [MySQL] Out of resources when opening file

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown