Загрузка текстового файла sql в переменную и отправка запроса вставки / обновления через py mysql выдает предупреждения - безопасно игнорировать? - PullRequest
0 голосов
/ 15 января 2020

У меня есть несколько хранимых процедур, которые хранятся в файле. sql. Я хочу использовать py mysql, чтобы добавить их в БД. Итак, я загружаю файл в переменную, как это:

    with open(filepath, 'r') as file:
        sql = file.read()

Затем я использую py mysql, чтобы представить это, как это:

    connection = pymysql.connect(...)

    with connection.cursor() as cursor:
        cursor.execute(sql)

    connection.close()

Это кажется отлично работает, но я получаю предупреждения, которые меня беспокоят. Они выглядят так:

/usr/lib/python3/dist-packages/pymysql/cursors.py:322: Warning: (139, 'Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.')
self._do_get_result()
/usr/lib/python3/dist-packages/pymysql/cursors.py:322: Warning: (1246, "Converting column '' from VARCHAR to TEXT")
self._do_get_result()

Мой вопрос таков: это безопасно игнорировать?

Обновление:

Я разобрался с первым предупреждением (предупреждение о размере строки). слишком большой): текстовый файл sql, который сгенерировал это предупреждение, был созданием View, а не созданием SP, и количество полей в представлении действительно превышало размер строки, так что загадка была решена там. Я все еще пытаюсь выяснить, что именно вызывает второе предупреждение.

Обновление 2:

Я понял второе предупреждение. Текстовый файл sql, который сгенерировал этот файл, был созданием SP, и там была переменная, объявленная как DECLARE v_ sql VARCHAR (32000). Я изменил это на VARCHAR (2000), и предупреждение исчезло. Таким образом, похоже, что наличие переменных больше определенного размера сгенерирует это предупреждение.

1 Ответ

0 голосов
/ 16 января 2020

В первом опубликованном предупреждении проблема заключалась в следующем: текстовый файл sql, который сгенерировал это предупреждение, был созданием представления, а не созданием SP, а количество полей в представлении превысило размер строки

Во втором опубликованном предупреждении проблема заключалась в следующем: текстовый файл sql, который сгенерировал его, был созданием SP, и там была переменная, объявленная как DECLARE v_ sql VARCHAR (32000). Я изменил это на VARCHAR (2000), и предупреждение исчезло. Таким образом, похоже, что наличие переменных больше определенного размера сгенерирует это предупреждение.

...