В части моего django API у меня есть следующее, чтобы обновить старые заметки:
old_note = request.databaseSession.query(Tmemo).\
filter(Tmemo.memosern1 == serial).\
one()
Этот запрос работает без проблем, так как я использую его во многих других местах.Странная проблема возникает с:
old_note.memotext = newtext
Затем, когда я фиксирую, происходят следующие ошибки:
ProgrammingError: (pyodbc.ProgrammingError) ('42000', u'[42000]
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The data types
text and text are incompatible in the equal to operator. (402)
(SQLExecDirectW)') [SQL: u'UPDATE tmemo SET memotext=? WHERE
tmemo.memosern1 = ? AND tmemo.memosern2 = ? AND tmemo.memotype = ? AND
tmemo.memotext = ?'] [parameters: ('asassasasasaassaassaasas2121',
u'P03000000060445', u'MEMO', u'5', u'asassasasasaassaassaasas')]
(Background on this error at: http://sqlalche.me/e/f405)
Tmemo - это просто таблица со столбцом для серийного номера memosern1
и memosern2
, введите с memotype
и сами примечания как memotext
, серийные номера и тип - varchar и memotext как текст.Я действительно не понимаю, что на самом деле означает text and text are incompatible
, это не имеет никакого смысла, также я просто фильтрую серийный номер, ничего больше, так что с этим странным запросом?
И я могу прекрасно создатьдругая строка в таблице с точно такими же используемыми переменными (newtext
), я просто не могу обновить существующую.
Есть идеи?Я могу предоставить больше информации