Как сохранить документ Word как BLOB в mySQL с Coldfusion - PullRequest
5 голосов
/ 10 февраля 2011

Клиент хочет сохранить документы Word в базе данных mySQL, несмотря на то, что я против. Сами документы не должны быть особенно большими, не более 1 МБ каждый. Я включил BLOB в администраторе CF и установил буфер больших двоичных объектов на 1 000 000

Вот мой SQL

<cfset newMessageID=1569>
<cfset fileName="c:\temp\0.doc">

<cffile action = "readbinary" 
file = "#fileName#"
variable = "fileData">

<cfquery name="addFile" datasource='#application.dsn#'>
    INSERT into files (fileID, fileData)
    Values (#newMessageID#, <cfqueryparam value="#fileData#" cfsqltype="CF_SQL_BLOB">)
</cfquery>

Появляется ошибка «Усечение данных: данные слишком длинные для столбца« filedata »в строке 1». Поле filedata в таблице файлов определенно установлено как blob. Что я делаю не так?

CF 9.01, mySQL 5.4

Что я делаю не так

Ответы [ 2 ]

5 голосов
/ 10 февраля 2011

Что за капля? Существуют различные типы, включая длинный и средний блоб . Размер двоичного объекта составляет (приблизительно) 2 ^ 16 = 65 536 байт, средний размер двоичного объекта составляет 2 24 = 16 777 216 байт. Если вы думаете, что вы можете превзойти средний блоб, тогда используйте longblob, то есть 2 ^ 32.

0 голосов
/ 10 февраля 2011

Просто плохая, плохая идея.

Я бы либо:

  1. Сначала конвертируйте его в текстовый файл, затем упростите импорт просто необработанного текста.

  2. Или просто загрузите его в какую-нибудь папку и сделайте его доступным для повторной загрузки или просмотра в Интернете

перерезав себе горло, пытаясь сохранитьв базе данных ...

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