Сбой реиндексации 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);