Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   MySQL вставка большого объёма текста (https://forum.antichat.xyz/showthread.php?t=104512)

SQLHACK 03.02.2009 15:25

MySQL вставка большого объёма текста
 
Есть форма с текстовым полем, туда вставляется текст. Текст может быть в несколько мегабайт. Скрипт на пхп принимает этот текст и должен вставить его в MYSQL бд.
Поле для вставки имеет тип LONGTEXT.
Запрос имеет вид

"INSERT INTO news (text) VALUES ('".mysql_real_escape_string($text)."')"

Но при вставке текста 1,5 мегабайта, сервак возвращает
#2006 - MySQL server has gone away

Собственно вопрос, как вставить в БД текст в несколько метров, если прав на использование LOAD_FILE нет.

AkyHa_MaTaTa 03.02.2009 15:35

Можно раздеялить на более мелкие части запрос.

Цитата:

Есть форма с текстовым полем, туда вставляется текст...
Текст может быть в несколько мегабайт.
Фигасе, не легше уже файлом принемать данные для вставки?

SQLHACK 03.02.2009 15:41

а из файла как вставлять ?
LOAD_FILE отключен, тут не суть как принять данные. что они прямиком из текстового поля , что из файла в переменную идут.

groundhog 03.02.2009 15:41

Цитата:

2006 - MySQL server has gone away
Возникает когда дофига коннектов к серверу БД и при этом конфиг не оптимизирован... Можно подточить конфиг, и думаю, что всё будет нормально. А вообще полтора метра вставлять это жесть... Лучше сделать через аплоад файлов, а вставлять урлу...

Ты просто пойми, что ты скорее всего, эти 1.5 метра передаёшь на сервер в режиме точка-к-точке, то есть он инициирует запрос, и ждёт от тебя полных данных, пока не наступает какой-то таймаут, и тебе вываливается эта ошибка... Разумеется, что операция вставки на самом сервере пройдёт в считанные секунды... В общем нужна оптимизация скрипта...

AkyHa_MaTaTa 03.02.2009 15:44

Цитирую:
Цитата:

Другой распространенной причиной получения ошибки MySQL server has gone away является выдача команды "закрытия" на соединении MySQL с последующей попыткой выполнить запрос на закрытом соединении.
Может php закрывает конект до того как успевает вставить?

Pashkela 03.02.2009 15:45

2 SQLHACK:

http://zalil.ru/upload/26611089

скрипт, который позволит вставить в БД что хочешь любого размера

AkyHa_MaTaTa 03.02.2009 15:49

Цитата:

Сообщение от Pashkela
2 SQLHACK:

http://zalil.ru/upload/26611089

скрипт, который позволит вставить в БД что хочешь любого размера

Наверно slil:
http://slil.ru/26611089

Gifts 03.02.2009 16:35

SQLHACK Посмотреть SHOW VARIABLES на предмет max_allowed_packet - это собственно и будет максимальная длина строки которую можно передать/получить из БД.

mysql_query('SET max_allowed_packet=16M'); у меня почему то не заработал, так что остается либо править конфиг мускуля - что вряд ли позволят, либо бить запрос на части

http://dev.mysql.com/doc/refman/4.1/...allowed_packet

SQLHACK 03.02.2009 19:00

вопрос решён

.::BARS::. 04.02.2009 13:43

Цитата:

Сообщение от Gifts
SQLHACK

mysql_query('SET max_allowed_packet=16M'); [/URL]

я думал что max_allowed_packet=16M через хтач проще замутить... если не рпав - поправте...


Время: 11:12