@sergeystepanov1988

Почему появляются ошибки при вставке данных в таблицу MySQL внутри цикла?

Пишу скрипт, который вытягивает ссылки со страницы, проходится по ним парсером и записывает данные в MySQL. Когда парсится одна станица все нормально, данные записываются. Как только засовываю все это дело в цикл, начинают сыпаться ошибки, вроде этой:
9e690d905df44ac2b4a025034096749d.PNG
Сам код:
var request = require('sync-request');
var cheerio = require('cheerio');
var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'prsr'
});

var baseUrl = 'https://en.wikipedia.org';
var startUrl = 'https://en.wikipedia.org/wiki/Category:Video_games_with_3D_graphics';

var res = request('GET', startUrl);
var $ = cheerio.load(res.getBody());

$('#mw-pages').find('.mw-category-group').each(function (index) {    

    var fullUrl = baseUrl + $(this).find('a').attr('href');
    var data = parsePage(fullUrl);

    connection.query('INSERT INTO games SET ?', data, function (err, result) {
        if (err) throw err; // выкидывает ошибку здесь
        console.log(result.insertId);      
    });

});
  • Вопрос задан
  • 314 просмотров
Пригласить эксперта
Ответы на вопрос 2
@ghostiam
На Go писатель, серверов пинатель.
Судя по ошибке, MySql разрывает соединение по таймауту. Нужно проверить настройки MySql и увеличить максимальное время соединения.
Для настройки таймаута, есть несколько параметров:
connect_timeout
wait_timeout
interactive_timeout
Ответ написан
DmitryVoronkov
@DmitryVoronkov
Python Developer
Дай mysql ошибку. Я не силен в js. Но по моему у тебя просто пустая строка. Ты не проверяешь на существование ссылке перед записью.
Может как-то так:
var request = require('sync-request');
var cheerio = require('cheerio');
var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'prsr'
});

var baseUrl = 'https://en.wikipedia.org';
var startUrl = 'https://en.wikipedia.org/wiki/Category:Video_games_with_3D_graphics';

var res = request('GET', startUrl);
var $ = cheerio.load(res.getBody());

$('#mw-pages').find('.mw-category-group').each(function (index) {    

    var fullUrl = baseUrl + $(this).find('a').attr('href');
    var data = parsePage(fullUrl);
    if (data) {
    connection.query('INSERT INTO games SET ?', data, function (err, result) {
        if (err) throw err; // выкидывает ошибку здесь
        console.log(result.insertId);      
}
    });

});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект