0

我正在使用 pymysql to_sql 函数从 python 向 mysql 写入表。我有 1000 行 200 列。

连接mysql的查询如下:

engine = create_engine("mysql://hostname:password#@localhostname/dbname")
conn = engine.connect()
writing query: df.to_sql('data'.lower(),schema=schema,conn,'replace',index=False)

我收到以下错误:

OperationalError: (pymysql.err.OperationalError) (1118, '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.')

我已将列 dtypes 更改为 string 仍然超出错误。请帮我解决这个错误。

我正在尝试保存如下表。在这里,我提供了一些带有创建表查询的列。在保存时创建表时出现错误。CREATE TABLE dbname.table 名称( 08:00:00TEXT, 08:08:00TEXT, 08:16:00TEXT, 08:24:00TEXT, 08:32:00TEXT, 08:40:00TEXT, 08:48:00TEXT, 08:56:00TEXT, 09:04:00TEXT, 09:12:00TEXT, 09:20:00TEXT, 09:28:00TEXT)

4

2 回答 2

0

该错误不是由您的代码引起的。是你的Mysql服务器造成的

要解决此问题,请更改 mysql 服务器的 my.ini 文本文件中的 innodb_log_file_size。

然后我相信错误将得到修复。

innodb_log_file_size = 500M 
innodb_log_buffer_size = 800M
innodb_strict_mode = 0
于 2021-03-19T06:07:14.303 回答
0

尝试在 my.cnf 中设置以下值并重新启动 mysqld。我希望这可以帮助你。有关更多详细信息,请参阅下面的链接。

 [mysqld]
 max_allowed_packet = 1G
 innodb_log_file_size = 2G
 innodb_log_buffer_size = 512M

有用的链接

于 2021-03-25T17:05:59.367 回答