Форумы портала PHP.SU » » Работа с СУБД » Проблема с записью большого текста в MySQL

Страниц (1): [1]
 

1. BadSanta - 21 Июля, 2011 - 18:04:25 - перейти к сообщению
Доброго времени суток.

При записи строки в MySQL через PHP появляется пустой экран, и скрипт останавливается.
Продебажил, дело именно в большом тексте (примерно 10000 символов). Если уменьшить наполовину, то все срабатывает.
Через PhpMyAdmin вставляется весь текст.
Текст без HTML тегов, кавычек и т.д.

Подскажите, в чем может быть проблема?
2. Roler - 21 Июля, 2011 - 19:28:40 - перейти к сообщению
Тип поля в БД хоть укажите и сам текст запроса.
Что там у вас за данные, опять же.
3. BadSanta - 22 Июля, 2011 - 12:06:41 - перейти к сообщению
Тип поля TEXT, но пробовал и LONGTEXT
Запрос: INSERT INTO pages (textFull) VALUES ('Большой текст').

Текст без кавычек, спец сиволов и т.д. Обычный текст-утка из 10000 символов.

Запрос рабочий. Если текс уменьшить, то запись проходит.

Может какие-то настройки MySQL надо поменять?
4. grefon - 22 Июля, 2011 - 12:40:39 - перейти к сообщению
BadSanta, текст обрезается или он вообще не добавляется?
Если вообще не добавляется, то проэкранируйте его с помощью mysql_escape_string.
5. BadSanta - 22 Июля, 2011 - 13:15:35 - перейти к сообщению
Текст вообще не добавляется, и скрипт на этой записи останавливается - белый экран.

Экранировать пытался и обычным mysql_escape_string и зендовским quoteInto, результат такой же.
6. grefon - 22 Июля, 2011 - 13:34:18 - перейти к сообщению
Смотрите тексты ошибок: http://phpfaq[dot]ru/debug
7. BadSanta - 25 Июля, 2011 - 09:28:33 - перейти к сообщению
Выставил
ini_set('display_errors',1);
error_reporting(E_ALL);

посмотрел логи, все чисто.

Проблема осталась.

Запрос:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. INSERT IGNORE INTO pages ( idPage, typePage, dt, bigPicture, smallPicture, name, announcement, author, source, sourceUrl, textFull, STATUS )
  3. VALUES ( '490', 'news', '2004-08-30 11:20:54', '', '', 'Основной аргумент против', 'По данным американских исследователей женщины, пьющие сладкие газированные напитки каждый день больше подвержены заболеванию диабетом, чем те, которые пьют их несколько раз в месяц', '', '', '', 'ДЛИННЫЙ ТЕКСТ', 'active')


Дамп таблицы в файле
8. EuGen - 25 Июля, 2011 - 09:50:11 - перейти к сообщению
Настройку max_post_size проверьте.
9. White - 25 Июля, 2011 - 10:28:35 - перейти к сообщению
10000 символов это не так уж и много, в UTF8 около 60кб, max_post_size по умолчанию 8Мб, так что вряд ли здесь проблема. длина longtext 4294967295 символа, так что проблемма не здесь так же. Я конечно очень сильно сомневаюсь, но вы не пытаетесь случайно получить fulltext через GET, а потом передать его в таблицу?
10. BadSanta - 25 Июля, 2011 - 11:10:27 - перейти к сообщению
Задача состоит вообще в том, чтобы переместить некоторые данные из одной таблицы в другую.
Я делаю SELECT, выбираю нужные записи, и потом INSERT-ом записываю их в новую таблицу.

Записи с меньшим количеством символов записываються без проблем, а как только доходит до текста побольше, все вырубаеться. Если пропустить эту запись с большим текстом, скрипт идет дальше, пока не наткнется на следующий большой текст.

post_max_size у меня вообще стоит 100M

Может дело в MySQL my.cnf ???
Прикрепил файл
11. White - 25 Июля, 2011 - 11:15:44 - перейти к сообщению
BadSanta
а не проще сделать что-то вроде
CODE (htmlphp):
скопировать код в буфер обмена
  1. INSERT INTO `table1` (`field1`, `field2`) SELECT (`field3`, `field4`) FROM `table2` WHERE `id`="n"
12. BadSanta - 25 Июля, 2011 - 11:19:50 - перейти к сообщению
К сожалению в моей ситуации такой вариант не подходит, некоторые значения полей мне нужно изменить перед записью. Но почему то более чем уверен, что результат был бы таким же

 

Powered by ExBB FM 1.0 RC1