0

JRuby と Sunspot を使用した Rails でのインデックス作成に問題があります。参照データを含む追加のデータベースと、テーブルの 1 つに関連付けられたモデルがあります。これは私のdatabase.ymlがどのように見えるかです:

# regular stuff
# ...
# reference database
snomed:
  adapter: jdbcmysql
  encoding: utf8
  hostname: localhost
  database: snomedct
  username: user
  password: pass
  socket: /tmp/mysql.sock
  pool: 5
  timeout: 5000

そして、これはそのデータベースの私のモデルがどのように見えるかです:

class SnomedMaster < ActiveRecord::Base

  establish_connection "snomed"
  self.table_name = "curr_description_f"

  attr_accessible :effectivetime, :active, :moduleid, :conceptid, :languagecode, :typeid, :term, :casesignificanceid 

  searchable do
    text :term
  end

end

ただし、 Rails コンソールでSnomedMaster.indexを実行するか、sunspot :reindex をレーキしてフィールドのインデックスを作成しようとすると、機能しません。問題はここにあるようです (トレースログから):

SELECT `curr_description_f`.* FROM `curr_description_f` WHERE (`curr_description_f`.`` >= 0) ORDER BY `curr_description_f`.`` ASC LIMIT 50
ActiveRecord::JDBCError: Unknown column 'curr_description_f.' in 'where clause': SELECT  `curr_description_f`.* FROM `curr_description_f`  WHERE (`curr_description_f`.`` >= 0) ORDER BY `curr_description_f`.`` ASC LIMIT 50

太陽黒点が列 *curr_description_f* にアクセスしたい理由がわかりません...

ありがとう

4

1 に答える 1

0

自力で解決しました。WHERE句で呼び出したいのは次のとおりです。

WHERE (`curr_description_f`.`id` >= 0)

基本的に、不正な形式の sqldump が原因で、データベースには主キーの文字列 ID があり、そのキーはモデルに割り当てられていませんでした。それが空だった理由です。そのため、 INTを主キーとしてテーブルを再作成し、モデルに次の行を追加しました。

self.primary_key = "id"
于 2013-07-10T05:44:07.943 に答える