- 论坛徽章:
- 0
|
用rails搭建了一个网站,其他的都好着,就是搜索的时候会出错。控制台错误提示如下:
SQL (0.000293) DROP TABLE IF EXISTS search_results
SQL (0.000524) CREATE TEMPORARY TABLE search_results (id INT AUTO_INCREMENT UNIQUE KEY, result_type VARCHAR(255), result_id INT)
SQL (0.000000) Mysql::Error: Column count doesn't match value count at row 1: INSERT INTO search_results VALUES (NULL, '0.09232217')
提示插入的数据与表结构不匹配,这个是相关的sql语句,返回的是三列,可不知到怎么回事,最后就少了一列。
我实在看不出哪有问题,请大家帮忙看看,谢谢了!
def create_search_results_table(search_query, models)
solr_results = models.first.multi_solr_search(search_query,
:models => models,
:results_format => :ids,
:limit => Conf.max_search_size)
conn = ActiveRecord::Base.connection
conn.execute("CREATE TEMPORARY TABLE search_results (id INT AUTO_INCREMENT UNIQUE KEY, result_type VARCHAR(255), result_id INT)")
# This next part converts the search results to SQL values
#
# from: { "id" => "Workflow:4" }, { "id" => "Pack:6" }, ...
# to: "(NULL, 'Workflow', '4'), (NULL, 'Pack', '6'), ..."
#下面是将查询的结果转化成 (NULL, 'Pack', '6')的形式,返回的是三个值
if solr_results.results.length > 0
insert_part = solr_results.results.map do |result|
"(NULL, " + result["id"].split(":").map do |bit|
"'#{bit}'"
end.join(", ") + ")"
end.join(", ")
conn.execute("INSERT INTO search_results VALUES #{insert_part}")
end
end
def drop_search_results_table
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS search_results") |
|