Ошибка вставки Zend_Db_Table с большим контентом - PullRequest
4 голосов
/ 02 марта 2012

Я давно пользуюсь Zend Framework, но теперь у меня проблема, которая меня озадачила. У меня есть таблица (MySQL) только с 2 столбцами (id и msg). Поле id является значением автоинкремента, а поле msg - типом длинного текста.

Для вставки записи в таблицу должен нормально работать следующий код:

$t = new Zend_Db_Table('table1');
$id = $t->insert(array('msg' => $content));

Всякий раз, когда $content представляет собой просто строковое значение, например «бла», оно работает просто отлично, как и должно быть. Но fieldtype не является типом длинного текста без причины, содержание будет довольно большим. Итак, теперь я пытаюсь поместить около 14 КБ данных в $content, исключений не возникает, вставка базы данных, похоже, сработала, но только для первых 6 КБ. Остальные данные просто пропали?!

Когда я пытаюсь использовать старомодные процедуры mysql_connect, mysql_query и т. Д., Все это работает как шарм. Так что, похоже, это проблема Zend Framework ... Кто-нибудь еще испытывал это?

1 Ответ

0 голосов
/ 10 марта 2012

Конфигурация

  • Zend Framework v1.11.10
  • Zend_Db_Table настроен с PDO_MYSQL адаптером
  • Таблица базы данных MySQL в два столбца;id (автоинкремент)

Выпуск

  • При попытке INSERT 14 КБ HTML-кода в кодировке UTF8 в столбец longtext
  • Zend_Db_Table обрезаетданные в 6kb

тесты

  • mysql_query могут INSERT те же данные без проблем
  • Zend_Db_Table могут SELECT все данныебез проблем
  • настройка error_reporting(-1) показывает «нет ошибок, предупреждений или уведомлений»
  • mediumblob работает нормально

Изоляция проблемы

  • Измените столбец на mediumtext. Работает ли сейчас вставка?
  • Вы проверяли, как выглядит запрос?См. Комментарий выше от namesnik .
  • Сколько байтов записано на неудачных вставках? Это соответствует?
...