PG::StringDataRightTruncation (오류: 값이 character varying(500) 유형에 대해 너무 깁니다)

이 토픽의 첫 번째 게시글을 수정하려고 하면 HTTP 500 오류 코드가 반환됩니다. 오류 로그에는 다음과 같은 치명적 오류가 보고되고 있습니다:

Message (7 copies reported)

PG::StringDataRightTruncation (ERROR:  value too long for type 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'

Backtrace

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'

Env

HTTP HOSTS: rembetiko.gr
2개의 좋아요

URL과 관련된 문제인 것 같습니다. 길이가 500자를 초과하네요.

500 에러가 발생하는 대신 잘라내거나 건너뛰는 처리를 해야 합니다.

해당 게시물에서 가장 긴 URL은 무엇인가요?

4개의 좋아요

감사합니다 @sam,

해당 게시물에 있는 유일한 URL은 인용문에서 가져온 것입니다. 실제 URL은 다음과 같습니다:

https://rembetiko.gr/t/%CE%BC%CE%B1%CE%BA%CE%AC%CE%BC-%CE%B2%CF%85%CE%B6%CE%B1%CE%BD%CF%84%CE%B9%CE%BD%CE%BF%CE%AF-%CE%B4%CF%81%CF%8C%CE%BC%CE%BF%CE%B9/6034/30

2개의 좋아요

그건 문자가 159개뿐인데… 여기서 무슨 일이 일어나는지 한번 보겠습니다:

Μακάμ - Βυζαντινοί Δρόμοι - #30 από kwstas_ferris - Παραδοσιακή μουσική - Ρεμπέτικο Φόρουμ

이상하네요… 해당 URL로는 재현이 안 됩니다.

아마 첫 번째 게시글이라는 점과 관련이 있는 건지 모르겠네요.

2개의 좋아요

이것은 주제의 제목과 관련이 있습니다. 제목을 더 짧은 것으로 수정했을 때 오류가 사라졌습니다. 원래 길이의 제목으로 되돌리려 했을 때, 제목을 업데이트하는 동안 500 오류가 표시되었습니다. 500 오류가 발생한 후 새로고침을 했더니 제목이 업데이트되어 있었습니다.

3개의 좋아요

조금 더 조사해 보니:

이 문제는 “연결된” 게시글(인용된 게시글)을 업데이트하여 인용 링크를 포함할 때 발생합니다. 긴 제목 때문에 링크가 500자를 초과하게 되어 이 문제가 발생합니다.

제목이 매우 긴 경우, 연결된 게시글의 실제 링크는 업데이트되지 않습니다.

4개의 좋아요

@Osama 코어에서 더 관대하게 잘리는(truncation) 방식을 조사하는 내용을 목록에 추가해 주실 수 있나요? 가능하면 테스트 케이스로 재현해 주시면 좋겠습니다.

물론 긴급하지 않으니, 시간이 나실 때 해주시면 됩니다.

3개의 좋아요

죄송하지만 이 스레드를 다시 올리는 건데, 이 버그가 해결되었나요? 오늘 우리 포럼에서 두 번째로 같은 문제가 발생했습니다…

수고 많으셨습니다! :smiley:

1개의 좋아요

죄송하지만 요즘 좀 바빠서 @Osama의 목록에 올려두었습니다. 앞으로 4주 안에 처리할 수 있기를 바랍니다.

4개의 좋아요

@chrispanag 문제는 이제 해결되었습니다:

말씀하신 대로, 원본 게시물의 제목이 길 경우 링크된 게시물에서 원본 게시물로 역링크를 생성할 때 오류가 발생하고 있었습니다.

3개의 좋아요

수정해 주셔서 정말 감사합니다! :smiley:

1개의 좋아요

이 주제는 2일 후 자동으로 닫혔습니다. 더 이상 새 답변을 작성할 수 없습니다.