Sql вставка как метод "вставить блок" - PullRequest
0 голосов
/ 01 августа 2011


Задача: Вставить данные из оракула в MySQL.

Чтобы ускорить вставку данных, я сделал это с помощью вставки данных в качестве метода «вставки блока».

Вот так. (Например, запрос с двумя записями .. (В реальном 500))

INSERT INTO test_table
            (bill_balance, 
             prime_uid, 
             customer_id, 
             account_name, 
             phone, 
             street, 
             bill_dt, 
             account_no) 
VALUES      ('111', 
             '123456', 
             '1234-56789', 
             'My name is', 
             '20373359', 
             'Street name', 
             '1970-01-01 02:00:00', 
             '123456'), 
            ('2', 
             '123', 
             '123-123', 
             'TEST', 
             '', 
             'test 123', 
             '1970-01-01 02:00:00', 
             '123456789') 

У меня была эта ошибка: Сервер MySQL пропал .
В php я сделал следующие настройки:

error_reporting(E_ALL);

ini_set("memory_limit", "512M"); 
ini_set("max_execution_time", 0);
set_time_limit(0);

ini_set('display_errors','1');
ini_set('interactive_timeout', 3600);
ini_set('wait_timeout', 3600);
ini_set('mysql.connect_timeout', 60);
ini_set('mysql.allow_persistent', true);

С простой вставкой это работает! Он не работает с методом вставки блоков.

1 Ответ

2 голосов
/ 01 августа 2011

Возможно, вы превысили допустимый размер пакета.
Сравните результат strlen($yourQuery) (+ некоторый допустимый запас) с результатом
SHOW VARIABLES LIKE 'max_allowed_packet'

см. Также: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_allowed_packet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...