2013-05-10 1 views
3

Я использую модуль felixge/node-mysql для взаимодействия с базой данных MySQL из node.js. Я столкнулся с проблемой при вводе больших объемов данных в базу данных в одном запросе INSERT.Максимальная длина запроса, чтобы избежать ошибки EPIPE в node.js

Хотя here есть описание того, как добавить 500'000 записей в базе данных с использованием больших Вставки-запросов, мой скрипт не со следующей ошибкой с гораздо более малыми объемами данных

{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write', fatal: true }

I что эта ошибка каким-то образом связана с проблемой № 359 в githubmysql-node, которая еще не назначена кому-либо еще за последние 5 месяцев с момента создания.

Таким образом, шляпа представляет собой практический размер запросов, которые гарантированно будут доставлены?

+0

Это не выглядит как ошибка, вам не может считать соединение надежным на 100%. Помните последнюю insertId, снова подключитесь и продолжайте. –

+0

@AndreySidorov Но я разделил данные на более мелкие пакеты, и ошибка исчезла. – zavg

ответ

2

У меня тоже была эта проблема.

Я пробовал эту библиотеку: https://github.com/sidorares/node-mysql2

это капля в замене для Драйвера MySQL felixge, и я не видел ошибки EPIPE использования.

4

У меня была эта проблема только сейчас, и выяснилось, что сервер Mysql, с которым я разговаривал (это был на Amazon RDS), имел очень низкую настройку max_allowed_packet. Все это решило проблему для меня.

Я получил ключ, который мне нужен, запустив (очень длинный) запрос от mysql на командной строке и выполнив поиск сообщения об ошибке, которое я получил. Затем я получил инструкции для увеличения опции на Amazon RDS здесь: http://dev.n0ise.net/2012/10/amazon-rds-error-2006-hy000-at-line-xxx-mysql-server-has-gone-away/

Смотрите также этот SO ответ, чтобы увидеть, что эта опция включена конкретной базы данных: https://stackoverflow.com/a/5688506/496046

+0

Как я помню, моя проблема была также на Amazon RDS – zavg