我有一些存储在.sql文件中的存储过程。我想使用pymysql将它们添加到数据库中。因此,我正在将文件加载到变量中,如下所示:
with open(filepath, 'r') as file:
sql = file.read()
然后我正在使用pymysql提交它,就像这样:
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),警告消失了。因此,看起来变量大于特定大小会生成该警告。
对于我发布的第一个警告,问题是:生成该警告的sql文本文件是View创建而不是SP创建,并且视图中的字段数量确实超过了行大小
对于我发布的第二条警告,问题是:生成一个是SP创建的sql文本文件,并且在那里声明了一个变量为DECLARE v_sql VARCHAR(32000)。我将其更改为VARCHAR(2000),警告消失了。因此,看起来变量大于特定大小会生成该警告。