Доброго времени суток!
Есть необходимость сохранять файлы в бд mssql2008r2.
Поле описано в orm следующим образом:
data:
type: blob
nullable: true
length: null
fixed: false
column: Data
но при сохранении, даже если в поле нет данных, sql server выдаёт ошибку:
SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Неявное преобразование из типа данных char в varbinary(max) не разрешено. Для выполнения этого запроса используйте функцию CONVERT.
Прицепившись профайлером вижу примерно следующий подготовительный запрос:
declare @p1 int
set @p1=NULL
exec sp_prepexec @p1 output,N'@P1 nvarchar(36),@P2 nvarchar(53),@P3 char(1)',N'INSERT INTO [Table] ("Id", "FileName", "Data") VALUES (@P1, @P2, @P3)',N'C8A56AE1-82F8-4CF7-BD8C-6F8254D7806C',N'Новый документ',NULL
select @p1
Используется драйвер от microsoft php_sqlsrv_56_nts. Пока единственный выход который видно - это отказаться от доктрины в этом месте, но это пока крайний вариант. Что я делаю не так?
UPD: триггер не срабатывает, так как sql server проверяет типы данных до запуска триггера.