Когда я пытаюсь отредактировать первое сообщение в этой теме, возвращается ошибка HTTP 500. В логах ошибок сообщается о возникновении этой фатальной ошибки:
Сообщение (7 копий)
PG::StringDataRightTruncation (ОШИБКА: значение слишком длинное для типа character varying(500)
)
app/models/topic_link.rb:240:in `safe_create_topic_link'
app/models/topic_link.rb:334:in `ensure_entry_for'
app/models/topic_link.rb:128:in `block (2 levels) in extract_from'
app/models/topic_link.rb:126:in `block in extract_from'
app/models/topic_link.rb:124:in `each'
app/models/topic_link.rb:124:in `extract_from'
lib/post_revisor.rb:224:in `revise!'
app/controllers/topics_controller.rb:379:in `update'
app/controllers/application_controller.rb:358:in `block in with_resolved_locale'
app/controllers/application_controller.rb:358:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:177:in `call'
Трассировка стека
rack-mini-profiler (2.3.1) lib/patches/db/pg.rb:113:in `exec'
rack-mini-profiler (2.3.1) lib/patches/db/pg.rb:113:in `async_exec'
mini_sql (1.0.1) lib/mini_sql/postgres/connection.rb:201:in `run'
mini_sql (1.0.1) lib/mini_sql/postgres/connection.rb:56:in `query_single'
app/models/topic_link.rb:240:in `safe_create_topic_link'
app/models/topic_link.rb:334:in `ensure_entry_for'
app/models/topic_link.rb:128:in `block (2 levels) in extract_from'
activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
activerecord (6.0.3.3) lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
activesupport (6.0.3.3) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
Окружение
HTTP HOSTS: rembetiko.gr
Это связано с заголовком темы. Когда я сократил заголовок темы, ошибки прекратились. При попытке восстановить его до исходной длины во время обновления заголовка появилась ошибка 500. После ошибки 500 я обновил страницу, и заголовок обновился.
Это происходит при обновлении «связанного» поста (того, на который дана цитата), чтобы включить ссылку на цитату. Ссылка (из-за длинного заголовка) оказывается длиннее 500 символов, что и вызывает эту проблему.
Фактическая ссылка в связанном посте никогда не обновляется, если заголовок очень длинный.
@Osama, можете ли вы добавить в свой список задач исследование более гибкого усечения в ядре? В идеале, вы могли бы воспроизвести это в тестовом случае.
Конечно, это не срочно, сделайте, когда у вас будет возможность.
Как вы и сказали, ошибка возникала при создании обратной ссылки от связанного сообщения на исходное, если у исходного сообщения была длинная заголовка.