Сбой реиндексации Sunspot Solr из-за недопустимых символов

У меня возникла проблема, когда Solr не удается переиндексировать мой сайт из-за следующей ошибки в моем производственном журнале:

bundle exec rake sunspot:solr:reindex
rake aborted!
RSolr::Error::Http: RSolr::Error::Http - 400 Bad Request
Error: Illegal character ((CTRL-CHAR, code 12))
 at [row,col {unknown-source}]: [155,1]

Я не уверен, откуда взялся этот "нелегальный персонаж" и где его найти. Я более чем благодарен всем за помощь, так как это вызывает ошибку 500 серверов в моем приложении прямо сейчас. Спасибо, и дайте мне знать, если потребуется дополнительная информация.

(Rails 3.2) (Rsolr 1.0.10)

1 ответ

Решение

Обычно это вызвано неправильными данными в вашей базе данных. Если вы используете MySQL, вы можете найти любые экземпляры управляющего символа 12 с таким запросом:

SELECT * FROM table WHERE col REGEXP CHAR(12);

Затем вы можете удалить символ из содержимого любых совпадающих строк и перейти к переиндексированию.

Вы также можете сделать что-то вроде этого, чтобы удалить управляющие символы:

UPDATE table SET col=REPLACE(col, CHAR(12), '') WHERE col REGEXP CHAR(12);

Другие вопросы по тегам