Задать вопрос
@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);      
    });

});
  • Вопрос задан
  • 317 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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);      
}
    });

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

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

Похожие вопросы
22 дек. 2024, в 14:07
15000 руб./за проект
22 дек. 2024, в 13:01
50000 руб./за проект
22 дек. 2024, в 10:44
15000 руб./за проект