Clear, empty, delete database for another import (development)

So, I managed to import my age old forum into Discourse, and I madea Discourse backup of it. Later I will put it down in a production environment and make the static archive. Right now I’m on a developoment build. But now I’m running into a problem: I would like to clear out the database and insert my second forum into Discourse, so that the old forum is removed.

I tried a few threads below, but they didn’t give me the answer I need:

https://meta.discourse.org/t/is-there-a-way-to-clear-out-my-database/23813/

https://meta.discourse.org/t/how-to-delete-the-whole-database/23602/

I even tried cd /;sudo find|grep shared/standalone, but didn’t find the thing to be removed.

Please advise! :slight_smile:

2 Likes

Easiest is to drop the database and create a new one: rake db:drop db:create db:migrate.

10 Likes

It’s probably also a good idea to remove uploads:

   rm -fr public/uploads

I once leaked a load of virus-infected uploads from one site I imported to another client. :sadpanda:

Here is a gist of my new_discourse_database script that kills any running rubies (you can’t drop the database if rails s is running), deletes uploads, makes the new database, and sets an admin user and password. It also prints an obnoxious warning and waits 5 seconds since I’ve run it by mistake a few times too many.

8 Likes

I only have the dump, so this is not an issue

1 Like

After running bundle exec rake db:drop db:create db:migrate I get the following error:

== Seed from /home/jsilvanus/discourse/db/fixtures/500_lounge_category.rb
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column groups.visible does not exist
LINE 1: ...AS t1_r22, "groups"."visibility_level" AS t1_r23, "groups"."...
                                                             ^
: SELECT "category_groups"."id" AS t0_r0, "category_groups"."category_id" AS t0_r1, "category_groups"."group_id" AS t0_r2, "category_groups"."created_at" AS t0_r3, "category_groups"."updated_at" AS t0_r4, "category_groups"."permission_type" AS t0_r5, "groups"."id" AS t1_r0, "groups"."name" AS t1_r1, "groups"."created_at" AS t1_r2, "groups"."updated_at" AS t1_r3, "groups"."automatic" AS t1_r4, "groups"."user_count" AS t1_r5, "groups"."alias_level" AS t1_r6, "groups"."automatic_membership_email_domains" AS t1_r7, "groups"."automatic_membership_retroactive" AS t1_r8, "groups"."primary_group" AS t1_r9, "groups"."title" AS t1_r10, "groups"."grant_trust_level" AS t1_r11, "groups"."incoming_email" AS t1_r12, "groups"."has_messages" AS t1_r13, "groups"."flair_url" AS t1_r14, "groups"."flair_bg_color" AS t1_r15, "groups"."flair_color" AS t1_r16, "groups"."bio_raw" AS t1_r17, "groups"."bio_cooked" AS t1_r18, "groups"."public" AS t1_r19, "groups"."allow_membership_requests" AS t1_r20, "groups"."full_name" AS t1_r21, "groups"."default_notification_level" AS t1_r22, "groups"."visibility_level" AS t1_r23, "groups"."visible" AS t1_r24 FROM "category_groups" INNER JOIN "groups" ON "groups"."id" = "category_groups"."group_id" WHERE "category_groups"."category_id" = 2  ORDER BY groups.name
/home/jsilvanus/discourse/app/serializers/category_serializer.rb:24:in `group_permissions'
/home/jsilvanus/discourse/app/serializers/category_serializer.rb:38:in `available_groups'
(eval):28:in `_fast_attributes'
/home/jsilvanus/discourse/app/models/category.rb:259:in `publish_category'
(eval):11:in `block (3 levels) in run_file'
(eval):9:in `block (2 levels) in run_file'
/home/jsilvanus/discourse/lib/tasks/db.rake:8:in `block in <main>'
/home/jsilvanus/.rbenv/versions/2.3.4/bin/bundle:23:in `load'
/home/jsilvanus/.rbenv/versions/2.3.4/bin/bundle:23:in `<main>'
PG::UndefinedColumn: ERROR:  column groups.visible does not exist
LINE 1: ...AS t1_r22, "groups"."visibility_level" AS t1_r23, "groups"."...
                                                             ^
/home/jsilvanus/discourse/app/serializers/category_serializer.rb:24:in `group_permissions'
/home/jsilvanus/discourse/app/serializers/category_serializer.rb:38:in `available_groups'
(eval):28:in `_fast_attributes'
/home/jsilvanus/discourse/app/models/category.rb:259:in `publish_category'
(eval):11:in `block (3 levels) in run_file'
(eval):9:in `block (2 levels) in run_file'
/home/jsilvanus/discourse/lib/tasks/db.rake:8:in `block in <main>'
/home/jsilvanus/.rbenv/versions/2.3.4/bin/bundle:23:in `load'
/home/jsilvanus/.rbenv/versions/2.3.4/bin/bundle:23:in `<main>'
NameError: NameError
/home/jsilvanus/discourse/app/models/category.rb:259:in `publish_category'
(eval):11:in `block (3 levels) in run_file'
(eval):9:in `block (2 levels) in run_file'
/home/jsilvanus/discourse/lib/tasks/db.rake:8:in `block in <main>'
/home/jsilvanus/.rbenv/versions/2.3.4/bin/bundle:23:in `load'
/home/jsilvanus/.rbenv/versions/2.3.4/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

I ran db:drop and db:craete separately as well, they went fine. db:migrate gives the fail.

I ran into the same problem today. Quick workaround: Call db:migrate twice.

7 Likes

Hi, we had a user field which has been removed during time. but some users has already filled it. Is there anyway to remove or clear those entries from the database?

the reason I want to remove it, is that It’s annoying some of our old users, as they can’t change the field anymore.

I’ve already tried to explain the problem here:

https://meta.discourse.org/t/removed-user-fileds-are-still-shown-in-user-profile-page/71344?u=pad_pors

I’m trying to delete a database that I’m using to test an import as well, but running the following command didn’t delete anything:

bundle exec rake db:drop db:create db:migrate

When I refresh, I still see all the data from the previous import.

Is there anything else I need to do to complete wipe and rebuild the database so I can go through setup again and/or attempt another import?

Have a look here

1 Like

I find it easier to make a backup just after setting up the site and then restoring it.