Slavenin999
@Slavenin999
программист php/erlang/elixir/js

[Symfony, Doctrine] Как сохранить файлы в бд ms sql, используя pdo?

Доброго времени суток!

Есть необходимость сохранять файлы в бд 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 проверяет типы данных до запуска триггера.
  • Вопрос задан
  • 588 просмотров
Пригласить эксперта
Ответы на вопрос 1
e_svirsky
@e_svirsky
Web Developer
Как вариант - создать второе подключение с типом - mssql. Тут написано что этот тип БД поддерживается:
doctrine-orm.readthedocs.org/projects/doctrine-dba...
И в этом месте воспользоваться этим коннекшином и заюзать Query Builder?
Так пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы