그건 꽤 전형적인 경우입니다.
제안하신 변경 사항들이 다른 가져오기들을 깨뜨리지 않을 가능성이 높다고 생각합니다. 보통 이러한 종류의 변경 사항 세트가 있고, 가져오기에 특화된 수많은 다른 변경 사항들이 함께 따라옵니다. 그중 어떤 것이 어떤 것인지 구별하고, 해당 변경 사항만 가지고 다시 테스트하는 것은 상당한 노력이 필요하므로 PR이 생성되지 않는 경우가 많습니다.
끝까지 해결하셨다니 다행입니다!
그건 꽤 전형적인 경우입니다.
제안하신 변경 사항들이 다른 가져오기들을 깨뜨리지 않을 가능성이 높다고 생각합니다. 보통 이러한 종류의 변경 사항 세트가 있고, 가져오기에 특화된 수많은 다른 변경 사항들이 함께 따라옵니다. 그중 어떤 것이 어떤 것인지 구별하고, 해당 변경 사항만 가지고 다시 테스트하는 것은 상당한 노력이 필요하므로 PR이 생성되지 않는 경우가 많습니다.
끝까지 해결하셨다니 다행입니다!
Constanza님, 정말 유용한 링크 감사합니다. ![]()
Jay님, 정보 감사합니다. 마이그레이션이 끝난 후, phpBB3 마이그레이션 도구를 더 잘 만들 수 있다면 도움이 될 수 있도록 나중에 PR을 올리겠습니다.
현재 스크립트는 다른 마이그레이션 중에 발견했던 [size=XXX] 태그도 무시합니다.
현재 진행 중인 마이그레이션에서는 임포터에 간단한 스크립트를 작성하여 XXX의 값을 사용하여 해당 태그를 Discourse에서 지원되는 <small>content</small> 및 <big>content</big>로 대체했습니다.
하지만 그것은 제 개인적인 바람이었으며, 일반적으로 더 적절한 해결책은 이미 [color] 태그를 처리하는 것처럼 단순히 이러한 [size] 태그를 제거하는 것일 수 있습니다.
피드백을 주신 @Canapin 님, 감사합니다. PR은 당연히 환영합니다!
또한 작은 티저를 하나: 모든 임포트 — phpBB만 아니라 — 를 훨씬 더 잘, 빠르고, 커스터마이징하기 쉽게 만들며, BBCode 변환과 관련된 그 귀찮은 문제들을 해결할 수 있는 솔루션을 개발 중입니다… ![]()
게시글을 가져오는 동안 다음 오류가 여러 개 발생했습니다(모든 게시글에서 발생한 것은 아닙니다):
251491 / 251672 ( 99.9%) [14140 items/min] Exception while creating post 354629. Skipping.
undefined method `[]' for nil:NilClass
/var/www/discourse/script/import_scripts/phpbb3/importers/post_importer.rb:66:in `block in map_first_post'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/object/try.rb:15:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/object/try.rb:15:in `try'
/var/www/discourse/script/import_scripts/base.rb:576:in `create_post'
/var/www/discourse/script/import_scripts/base.rb:523:in `block in create_posts'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/mysql2/alias_method.rb:8:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/mysql2/alias_method.rb:8:in `each'
/var/www/discourse/script/import_scripts/base.rb:510:in `create_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:192:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:874:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:873:in `loop'
/var/www/discourse/script/import_scripts/base.rb:873:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:254:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:188:in `import_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:38:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:22:in `perform'
script/import_scripts/phpbb3.rb:33:in `<module:PhpBB3>'
script/import_scripts/phpbb3.rb:14:in `<module:ImportScripts>'
script/import_scripts/phpbb3.rb:13:in `<main>'
하지만 이 오류의 원인을 파악하지 못했습니다.
어떤 단서가 있을까요?
실제로 게시글이 누락되었는지 어떻게 확인할 수 있을까요? "Exception while creating post 354629"에 해당하는 데이터(예: 게시글 내용)를 출력하는 방법을 찾을 수 없었습니다.
지난 며칠 동안 다른 가져오기 테스트에서는 이 오류가 발생하지 않았던 것 같은데, 아마도 제가 신경 쓰지 않았던 것일 수도 있습니다… 이것이 알려진 문제와 관련이 있을까요?
251490 / 251672 ( 99.9%) [14140 items/min] Parent post 337703 doesn't exist. Skipping 354628: vw-camper est malade !?
이 특정 문제에 대해 가져오기 스크립트를 두 번 실행했습니다.
이 기능을 사용하지 않는 경우, settings.yml 파일에서 tag_mappings: {}로 설정했는지 확인하세요.
나 너무 바보 같아! 사실 그걸 해볼까 생각도 했는데, 전에 이 에러를 만난 적이 없다고 너무 확신해서 시도조차 안 했어… ![]()
문제가 해결됐어, 정말 고마워.
지금 많은 것을 말할 수 없겠지만, 이 새로운 기능이 어떻게 작동할지, 그리고 언제쯤 이 기능을 사용해 쓸 수 있는 가져오기 스크립트를 사용할 수 있을지 힌트라도 줄 수 있을까요?
올해 또 다른 phpBB를 이주할 예정이라, 이 부분에 대해 조금 더 알아두면 제게 매우 흥미로울 것 같습니다. ![]()
안녕하세요, phpbb 3.2를 discourse로 마이그레이션하는 것을 테스트 중입니다. 규모가 꽤 큰 포럼(30k 주제 / 600k 게시글)이었고, 거의 모든 것이 잘 작동했지만 몇 가지 주제가 가져오지지 않았습니다(“Parent post xx doesn’t exist” 오류). 여러 번 실행해도 해결되지 않았지만, 큰 문제는 아닙니다.
제 주요 문제는 새로운 데이터로 후속 가져오기를 수행할 때(sha256sum으로 import/mysql/imported 파일에서 검증함) discourse에 새로운 게시글이 가져오지지 않는다는 점입니다. 과정 초기에 예외가 발생하는데, 이것이 관련이 있는지 모르겠습니다:
Failed to map post with ID 6815
BIGINT UNSIGNED value is out of range in '(`phpbb_prod`.`o`.`poll_option_total` - (select count(distinct `phpbb_prod`.`v`.`vote_user_id`) from `phpbb_prod`.`phpbb3_poll_votes` `v` join `phpbb_prod`.`phpbb3_users` `u` join `phpbb_prod`.`phpbb3_topics` `t` where ((`phpbb_prod`.`u`.`user_id` = `phpbb_prod`.`v`.`vote_user_id`) and (`phpbb_prod`.`v`.`topic_id` = `phpbb_prod`.`t`.`topic_id`) and (`phpbb_prod`.`v`.`poll_option_id` = `phpbb_prod`.`o`.`poll_option_id`) and (`phpbb_prod`.`t`.`topic_id` = `phpbb_prod
표시된 SQL을 보면, 게시글에 내장된 투표(poll) 관련 문제인가요?
좋은 하루 보내세요!
아직 개발 중이라 많은 것을 말하기 어렵습니다. 계획은 변경될 수 있지만… "올해"라고 답하는 것이 정확할 것입니다. ![]()
BIGINT UNSIGNED 값이 범위를 벗어났습니다
이 투표에 익명 투표가 그렇게 많나요?
다음 SQL을 조정해야 합니다:
이런 식으로? https://stackoverflow.com/a/11704174/451338
해결책을 찾으면 알려주시거나, 수정 사항을 포함한 PR을 만들어 주세요. 감사하겠습니다.
투표 기능은 포럼이 처음 시작할 때부터 있었던 것이기 때문에, 그 당시 제가 관리하지는 않았습니다. 하지만 익명 사용자가 투표에 참여하거나 답변하는 것은 허용되지 않았던 것으로 생각합니다.
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
이렇게 하면 모든 투표 결과를 조회할 수 있었고, 그중 2건은 “anonymous_votes” 값이 음수였습니다. 실제로 이 포럼은 어떻게 익명 투표를 허용했던 것 같습니다 ![]()
팁을 주셔서 감사합니다, @gerhard. 더 깊이 파고들어 보겠습니다…
현재 phpBB 포럼을 Discourse로 마이그레이션하는 방법을 조사 중입니다. 문제는 저희 phpBB가 MySQL 대신 Postgres를 사용하고 있다는 점인데, 스크립트를 Postgres에서도 작동하도록 조정하고 싶습니다.
이 작업을 가장 좋은 방법으로 진행할 수 있는 방향에 대해 조언을 주실 수 있을까요? 가능하면 이 작업의 혜택이 모두에게 돌아가도록, 즉 단순히 급하게 땜질하는 방식이 아니라 업스트림에서 인정하는 방식을 사용하길 원합니다.
제 판단으로는 PostgreSQL 스키마에 대한 적절한 SQL 문구를 올바른 DB 어댑터를 사용하여 추가하는 문제가 대부분인 것 같습니다. 다만, 설정에 지정된 DB 유형이 필요로 할 경우 Docker 컨테이너의 오케스트레이션이 어떻게 조정되어야 PostgreSQL 인스턴스를 올바르게 시작하고, DB 덤프를 가져와서 해당 인스턴스에 대해 문구를 실행할 수 있는지는 확실하지 않습니다.
postgresql로 실행되는 phpBB용 일괄 가져오기 스크립트가 있습니다. 보셨나요? discourse/script/bulk_import/phpbb_postgresql.rb at main · discourse/discourse · GitHub
다만, 최근에 사용된 적이 없는 것 같아서 현재는 깨져 있을 가능성이 높고, Markdown 저장 형식이 변경되었기 때문에 최신 phpBB 버전과 호환되지 않을 수 있습니다.
![]()
어떤 경로를 선택하든, 정말 원하지 않는 한 솔루션을 과도하게 다듬는 데 너무 많은 시간을 쓰지 않는 것이 좋습니다. 현재 가져오기 스크립트는 올해 안에 비추천(deprecated) 처리될 예정입니다…
감사합니다. 그걸 몰랐어요! 그리고 스크립트가 곧 비추천(deprecated)될 것이라는 알림도 감사드립니다. 그렇다면 곧 비추천될 예정이라면, 해당 스크립트를 위해 이렇게 큰 기능을 upstreaming하는 것이 가치가 없을 것 같네요. 대체 방안이 계획되어 있나요?
네, 물론이죠. 대체 방안이 마련될 것입니다.
또 다른 궁금한 점이 있는데, 제가 가져온 사용자에게 Discourse가 가져오기 관련 어떤 알림도 이메일로 보내지 않도록 하려면 disable_edit_notifications 외에 다른 설정도 해야 하나요? 현재 인스턴스가 공개되어 있지 않고, 가져오기를 실험 중이라서 몇 번의 시도가 필요할 것 같아서, 이메일이 발송되는 것을 피하고 싶습니다.
지금 disable_emails 사이트 설정을 찾고 계신가요…
Discourse에서는 [b]텍스트[/b]가 인라인으로 지원되지만, 줄바꿈이 포함된 텍스트 블록에서는 해석되지 않습니다.
[b]예를 들어, 게시글에 이 텍스트가 있고
빈 줄 뒤에 줄을 이어서 작성한 후 bbcode를 닫으면, 텍스트가 굵은 글자로 변환되지 않습니다.[/b]
[i] 태그와 아마도 다른 태그들도 마찬가지입니다.
내 가져오기(Import)에서 이 문제를 깔끔하게 해결하는 방법을 찾지 못했습니다. 아이디어가 있으신가요? ![]()
이것은 이상적인 해결책은 아니지만, 최소한 B안이나 C안에 대한 아이디어는 있습니다.
가져오기(import) 이후에는, 이 블록에서 <b>가 동작하기 때문에 [b]를 <b>로, [/b]를 </b>로 다시 매핑할 수 있습니다.
test
test
<b>test
test</b>
하지만 큰 규모의 포럼에서는 시간이 좀 걸릴 것입니다 ![]()
좋은 생각이에요!
내 포럼은 아직 가져오지 않았기 때문에, 가져오기를 만드는 작업을 계속할 수 있어요.
의미론적 "속성"은 차치하고서라도, <strong>과 <em>을 사용하는 것이 더 합리적이지 않을까요?
좋은 소식입니다!
처음으로 시도해볼 만한 좋은 방법이라고 생각합니다.