With the latest update ver 2.0.0 beta10 I’m now getting more errors with the bbpress import script (still can’t figure out why images are not being pulled over, but instead referring to their old URLs). Error after the importing topics and posts:
importing private messages...
120 / 120 (100.0%) [156526 items/min] /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.1/lib/mysql2/client.rb:131:in `_query': Table 'db.wp_bp_messages_messages' doesn't exist (Mysql2::Error)
from /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.1/lib/mysql2/client.rb:131:in `block in query'
from /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.1/lib/mysql2/client.rb:130:in `handle_interrupt'
from /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.1/lib/mysql2/client.rb:130:in `query'
from /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/rack-mini-profiler-1.0.0/lib/patches/db/mysql2.rb:22:in `query'
from script/import_scripts/bbpress.rb:505:in `bbpress_query'
from script/import_scripts/bbpress.rb:453:in `block in import_private_messages'
from /var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
from /var/www/discourse/script/import_scripts/base.rb:869:in `loop'
from /var/www/discourse/script/import_scripts/base.rb:869:in `batches'
from script/import_scripts/bbpress.rb:452:in `import_private_messages'
from script/import_scripts/bbpress.rb:32:in `execute'
from /var/www/discourse/script/import_scripts/base.rb:46:in `perform'
from script/import_scripts/bbpress.rb:510:in `<main>'
EDIT: After deeper inspection I found that (at least in my setup) the file was called
- "templates/import/mysql-dep.template.yml"
NOTE that the correct spelling is “dep”, not “dev”.
=================
Hello! Thanks for posting this. I tried but got this error:
cat: templates/import/mysql-dev.template.yml: No such file or directory
I unfortunately don’t know enough about Docker to proceed…What am I doing wrong? Thank you so much. Here is the full output:
root@forum /var/discourse # ./launcher rebuild import
Ensuring launcher is up to date
Fetching origin
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 16 (delta 12), reused 7 (delta 6), pack-reused 0
Unpacking objects: 100% (16/16), done.
From https://github.com/discourse/discourse_docker
2ad56e6..d032356 master -> origin/master
Updating Launcher
Updating 2ad56e6..d032356
Fast-forward
discourse-setup | 2 +-
image/base/Dockerfile | 5 +++--
launcher | 4 ++--
3 files changed, 6 insertions(+), 5 deletions(-)
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
cat: templates/import/mysql-dev.template.yml: No such file or directory
cd /pups && git pull && /pups/bin/pups --stdin
/usr/bin/docker: invalid reference format: repository name must be lowercase.
See '/usr/bin/docker run --help'.
cat: cids/import_bootstrap.cid: No such file or directory
"docker rm" requires at least 1 argument.
See 'docker rm --help'.
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
rm: cannot remove 'cids/import_bootstrap.cid': No such file or directory
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one
root@forum /var/discourse #support
So I found out the reason for the issue we were having. The import script is breaking when it is trying to get wp_bb_message_message table, that’s happening because you would not have BuddyPress private messages module (which create these table) installed in your WordPress.
I did manage to pass that error by removing the code in bbpress.rb from line 414 to 502
This
def import_private_messages
puts "", "importing private messages..."
last_post_id = -1
total_posts = bbpress_query("SELECT COUNT(*) count FROM #{BB_PRESS_PREFIX}bp_messages_messages").first["count"]
threads = {}
total_count = bbpress_query("SELECT COUNT(*) count FROM #{BB_PRESS_PREFIX}bp_messages_recipients").first["count"]
current_count = 0
batches(BATCH_SIZE) do |offset|
rows = bbpress_query(<<-SQL
SELECT thread_id, user_id
FROM #{BB_PRESS_PREFIX}bp_messages_recipients
ORDER BY id
LIMIT #{BATCH_SIZE}
OFFSET #{offset}
SQL
).to_a
break if rows.empty?
rows.each do |row|
current_count += 1
print_status(current_count, total_count, get_start_time('private_messages'))
threads[row['thread_id']] ||= {
target_user_ids: [],
imported_topic_id: nil
}
user_id = user_id_from_imported_user_id(row['user_id'])
if user_id && !threads[row['thread_id']][:target_user_ids].include?(user_id)
threads[row['thread_id']][:target_user_ids] << user_id
end
end
end
batches(BATCH_SIZE) do |offset|
posts = bbpress_query(<<-SQL
SELECT id,
thread_id,
date_sent,
sender_id,
subject,
message
FROM wp_bp_messages_messages
WHERE id > #{last_post_id}
ORDER BY thread_id, date_sent
LIMIT #{BATCH_SIZE}
SQL
).to_a
break if posts.empty?
last_post_id = posts[-1]["id"].to_i
create_posts(posts, total: total_posts, offset: offset) do |post|
if tcf = TopicCustomField.where(name: 'bb_thread_id', value: post['thread_id']).first
{
id: "pm#{post['id']}",
topic_id: threads[post['thread_id']][:imported_topic_id],
user_id: user_id_from_imported_user_id(post['sender_id']) || find_user_by_import_id(post['sender_id'])&.id || -1,
raw: post['message'],
created_at: post['date_sent'],
}
else
# First post of the thread
{
id: "pm#{post['id']}",
archetype: Archetype.private_message,
user_id: user_id_from_imported_user_id(post['sender_id']) || find_user_by_import_id(post['sender_id'])&.id || -1,
title: post['subject'],
raw: post['message'],
created_at: post['date_sent'],
target_usernames: User.where(id: threads[post['thread_id']][:target_user_ids]).pluck(:username),
post_create_action: proc do |new_post|
if topic = new_post.topic
threads[post['thread_id']][:imported_topic_id] = topic.id
TopicCustomField.create(topic_id: topic.id, name: 'bb_thread_id', value: post['thread_id'])
else
puts "Error in post_create_action! Can't find topic!"
end
end
}
end
end
end
end
You can also get past it by simply installing buddypress and enabling its private message module.
A bbpress install is quite standard. A wordpress database and all posts inside wp_posts. So all I need is to dump the Wordpress posts database ?
Sorry to ask but I didn’t find any other instructions.
You can either get a dump of the entire wordpress database or you can read the code and see what tables are actually used. It’s easier to dump the whole database.
Whether you do that with mysqump or cpanel or phpmtadmin or some other tool is hard make a recommendation for.
Ich habe beim Importieren einen Verbindungsfehler zur MySQL-Datenbank. Die SQL-Datenbank befindet sich auf localhost. Wie kann ich diesen Fehler umgehen?
/var/www/discourse# su discourse -c “bundle exec ruby script/import_scripts/bbpress.rb”
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect’: Kann keine Verbindung zum lokalen MySQL-Server über den Socket ‘/var/run/mysqld/mysqld.sock’ herstellen (2) (Mysql2::Error::ConnectionError)
MySQL läuft in einem Container, in dem auch Discourse ausgeführt wird. Anscheinend kann das Import-Skript aus dem Discourse-Container keine Verbindung zum MySQL-Container herstellen. Was kann ich noch tun?
Ich habe das Problem gelöst. Ich habe localhost verwendet, dann habe ich herausgefunden, dass die IP-Adresse für MySQL aus ```
docker inspect mysql | grep IPAddress.
stammen sollte.
Nächstes Problem mit dem Import-Skript..
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': Plugin caching_sha2_password konnte nicht geladen werden: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: kann keine gemeinsam genutzte Objektdatei öffnen: Datei oder Verzeichnis nicht gefunden (Mysql2::Error::ConnectionError)
Ich habe den ALTER-Befehl verwendet, um das Passwort zu ändern.
Nachdem ich einige der oben vorgestellten Lösungen für Probleme beim Ausführen des Importers verwendet habe, werden keine Beiträge tatsächlich importiert. Haben Sie eine Idee, warum eine erfolgreiche Verbindung zur neuen Datenbank hergestellt wird, aber keine Beiträge importiert werden?
Ich versuche, einige hundert Beiträge von einer nicht-bbPress WordPress-Website (5.7) in eine bereits laufende Discourse-Website mit einigen hundert Beiträgen (2.7.0-beta5) zu importieren.
/var/www/discourse# su discourse -c "bundle exec ruby script/import_scripts/bbpress.rb"
Vorhandene Gruppen werden geladen...
Vorhandene Benutzer werden geladen...
Vorhandene Kategorien werden geladen...
Vorhandene Beiträge werden geladen...
Vorhandene Themen werden geladen...
Benutzer werden importiert...
Anonyme Benutzer werden importiert...
Kategorien werden importiert...
Themen und Beiträge werden importiert...
Anhänge aus 'postmeta' werden importiert...
Permalinks werden erstellt...
Status der Themen wird aktualisiert
Bumped_at bei Themen wird aktualisiert
Letzter Beitrag bei Benutzern wird aktualisiert
Letzte Sichtbarkeit bei Benutzern wird aktualisiert
first_post_created_at wird aktualisiert...
post_count der Benutzer wird aktualisiert...
topic_count der Benutzer wird aktualisiert...
digest_attempted_at der Benutzer wird aktualisiert...
Themenbenutzer werden aktualisiert
Beitragstiming wird aktualisiert
Featured-Themenbenutzer werden aktualisiert
Featured-Themen in Kategorien werden aktualisiert
6 / 6 (100.0%) [1771 Elemente/Min] ]
Themenzähler werden zurückgesetzt
Fertig (00h 00min 00sec)