Sqlalchemy «Неверный порядковый номер пакета», несмотря на использование scoped_session - PullRequest
0 голосов
/ 03 августа 2020

Я использую Flask с Sqlalchemy, и после переключения с mysqldb на py mysql я получаю следующую ошибку: InternalError('(pymysql.err.InternalError) Packet sequence number wrong - got 29 expected 1') (числа меняются в зависимости от запроса)

Эта ошибка встречается довольно редко (около 1 из 100), и причина, по которой я перехожу на py mysql из mysqldb, заключается в том, что mysqldb продолжал создавать ошибки декодирования utf8 с примерно такой же скоростью . Возможно ли, что из-за этого я все еще получаю ошибки, а py mysql интерпретирует «недопустимый начальный байт» как ошибку «недопустимая последовательность пакетов» из той же проблемы ниже по течению?

Как указано в заголовке говорит, что я уже реализовал scoped_session, и это не решает проблему. Может я что-то делаю не так? + py mysql to + mysqldb будет работать точно так же, но ошибка «последовательности пакетов» изменится на UnicodeDecodeError('utf-8', b'\xf6', 8, 9, 'invalid start byte'). Кто-нибудь слышал об этом раньше? Я все еще пытаюсь отладить, почему я получаю UnicodeDecodeError, и если переключение на другой диалект вызывает другую ошибку - или ту же ошибку, выраженную по-другому.

Код работал нормально без scoped_session, и это кажется излишним, если он не исправляет ошибку последовательности пакетов. Извините, если мне кажется, что это сразу несколько вопросов, но чутье подсказывает мне, что эти проблемы связаны между собой.

1 Ответ

0 голосов
/ 04 августа 2020

Как и ожидалось, эта ошибка не связана с flask, sqlalchemy или сеансами с незаданной областью. Насколько я понимаю, это ошибка, вызванная взаимодействием MySQL 5.7 с диалектом py mysql, которая выдает «ошибку последовательности пакетов», хотя на самом деле это проблема UTF-8.

В любом случае , обновление до MariaDB 10.5 решило эту проблему. В реализации scoped_sessions не было необходимости.

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