我尝试使用ActiveRecord导入方法插入大约200,000条记录。它失败了,出现TypeError:can 't quote Hash错误。我在网上搜索了一下,但没有任何与我的场景相关的有意义的内容。我从较小的尺寸开始,成功地达到了120,000条记录。如果我继续尝试,我想我可以找到一个限制。除了将记录插入较小的批次外,还有什么其他方法吗?这是我的配置- Rails 5.0.3,Ruby 2.3.0,Mysql 5.1.73。我知道这些都很过时了。有人有类似的问题,你是如何解决的?
gg58donl1#
“TypeError:can't quote Hash”是由连接适配器抛出的。源代码。这个错误可以很容易地重新创建:
Arel::Nodes.build_quoted({}).to_sql. #=> TypeError: can't quote Hash
字符串这意味着在你试图导入的记录中,很可能有一个空的Hash,而不是JSON(这可能是你想要的)。如果是这种情况,您可能需要搜索记录以确定这些违规哈希的位置并相应地修改它们。例如,如果它们旨在成为JSON数据,则可以使用Hash#to_json转换它们。
Hash#to_json
1条答案
按热度按时间gg58donl1#
“TypeError:can't quote Hash”是由连接适配器抛出的。源代码。
这个错误可以很容易地重新创建:
字符串
这意味着在你试图导入的记录中,很可能有一个空的Hash,而不是JSON(这可能是你想要的)。
如果是这种情况,您可能需要搜索记录以确定这些违规哈希的位置并相应地修改它们。例如,如果它们旨在成为JSON数据,则可以使用
Hash#to_json
转换它们。