提问人:soLegacy 提问时间:11/2/2023 最后编辑:dbuggersoLegacy 更新时间:11/3/2023 访问量:38
为什么ActiveRecord Model.import无法在MySQL中插入批量记录?
Why ActiveRecord Model.import is failing to insert bulk records in MySQL?
问:
我正在尝试使用 ActiveRecord 导入方法插入大约 200,000 条记录。它失败,出现 TypeError: can't quote Hash 错误。我在网上搜索了一下,但没有任何与我的场景相关的有意义的东西。
我从较小的规模开始,并成功了多达 120,000 条记录。如果我继续尝试,我想我可以找到一个极限。除了将记录插入到较小的批次中之外,我还能做些什么吗?
这是我的配置 - Rails 5.0.3、Ruby 2.3.0、Mysql 5.1.73。我知道这些已经过时了。
有人遇到过类似的问题,您是如何解决的?
答:
2赞
engineersmnky
11/3/2023
#1
“TypeError: can't quote Hash”由连接适配器引发。来源。
可以很容易地重新创建此错误:
Arel::Nodes.build_quoted({}).to_sql.
#=> TypeError: can't quote Hash
这意味着,在您尝试导入的记录中,很可能有一个裸露的哈希,而不是 JSON(这可能是预期的)。
如果是这种情况,您可能需要搜索记录以确定这些有问题的哈希值的位置,并相应地修改它们。例如,如果它们打算成为 JSON 数据,则可以使用它们进行转换。Hash#to_json
下一个:MYSQL分组中的奇怪行为
评论