The preferred way to restore a project database is the second method you mentioned.
Before you restore the database, first create a new database directly on the database server, for example with pgAdmin. Then restore the backup to this database. In test cases it is recommended to select the option ‘No owner’ in the Restore options window when the backup came from a different server, because it can cause problems with access to the database when the security settings on the target database server differs from the settings on the source database server.
Don’t let the MxRuntime create the new database in this case, because then automatically some system tables are created. For the restore action, it is better that the database is entirely empty.
When restoring the database make sure you have the option "no owner" checked.
The reason that you get a lot of errors, is that the modeler (personally the xas) export it's metamodels to the database. So, when you try to restore your database backup on the database that the modeler have created you get many conflict.
For example: the modeler have created a system$user table, and your database backup wants to restore the same table. And that is the conflict.
So there is no other way than to first drop your database and than restore it with your database backup. Thus you haven't to change you databasename in the modeler, but you have to drop the database from postgres server before restoring it.