2010-10-25 16 views
5

Je charge un gros fichier texte dans ma base de données via LOAD DATA. Le fichier fait environ 122 000 lignes. Laissé seul, le db est conçu pour être déclenché sur AFTER INSERT sur cette table. Ce qui se passe est exactement qui commencent la requête d'exécution, ne cesse d'exécution pour comme 15-20 minutes, puis il retourneLOAD DATA LOCAL INFILE perd la connexion, comment puis-je corriger le timeout?

Error Code: 2013 
Lost connection to MySQL server during query 

puis

Error Code: 2006 
MySQL server has gone away 

Après l'apparition des erreurs, je re-exécuter la requête et se termine immédiatement;

0 row(s) affected 
Records: 122574 Deleted: 0 Skipped: 122574 Warnings: 0 

Et la table est en effet importée;

select * from quote 
122574 row(s) returned 

Je mysqld 01/05/51 sous Mac OS X 10.6.4 et ma requête est

LOAD data local INFILE 
     '/Users/ash/quotes/data.txt' 
     INTO TABLE quote fields 
     TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\r\n' 
      (quote.date,quote.ticker,quote.open, 
      quote.high,quote.low,quote.close,quote.volume,@market) 
      SET market = 'sp'; 

Il semble que le db-connexion est le calendrier, comment puis-je résoudre ce problème?

+0

Vous pouvez envisager d'éliminer les AFTER INSERT et d'effectuer à la place leurs opérations, en masse, après le chargement du fichier. 122K lignes, en particulier avec juste quelques colonnes numériques, chacune, est * minuscule * et ne devrait vraiment prendre que quelques secondes, au plus ... – user359996

Répondre

0

Vous pouvez modifier la limite de temps en définissant la variable wait_timeout lorsque vous démarrez mysqld. Référez-vous à MySQL documentation