[HowTo] Partially Migrate SQLitedb from Ts3 to Ts6

Hey there!
I found a way to at least migrate your Channels, Groups, and their properties.

:wrench: What You Need:

  • DB Browser for SQLite
  • On your old TS3 server:
    Create a Privilege Key for your highest server group. Save it somewhere for later, then stop the server.
  • Copy the ts3server.sqlitedb file from your old TS3 server.
  • Copy the freshly created tsserver.sqlitedb from your new TS6 server
    (start it once & save the privilege key if you haven’t created one yet).
  • Create a folder (e.g., on your desktop) and put both .sqlitedb files in it, along with the entire files/ folder from your TS3 server directory.
  • Some time and curiosity. :wink:

:white_check_mark: Step 1: Export from the old database

  1. Install and open DB Browser for SQLite.
  2. Click Open Database, navigate to your prepared folder, set file type to All Files, and open the ts3server.sqlitedb file.
  3. Go to File → Export → Tables as CSV file.
  4. While holding Ctrl, select the following tables:
  • channel_properties
  • channels
  • groups_channel
  • groups_server
  • perm_channel
  • perm_channel_groups
  • perm_server_group
  • server_properties
  1. Press Save (create a new folder if needed).
  2. Close the database.

:white_check_mark: Step 2: Import to the new database

  1. Click Open Database again, select All Files, and open the tsserver.sqlitedb file from your new TS6 server.
  2. Go to File → Import → Table from CSV file.
  3. Select all the previously exported .csv files and press Open.
  4. Tick:
  • “Column names in first line”
  • “Separate tables”
  1. Click Advanced, and under Conflict Strategy, choose:
  • Replace existing row
  1. Press OK and confirm with Yes to all on the popup.
  2. Click Write Changes and then Close Database.

:white_check_mark: Step 3: Final Setup

  1. Stop your TS6 server if it’s still running.
  2. In your TS6 server folder, delete the existing tsserver.sqlitedb and files/ folder.
  3. Replace them with:
  • Your edited tsserver.sqlitedb
  • The backed-up files/ folder from your TS3 server
  1. Start the server and enter your Privilege Key.
  2. Let your friends know they’ll have to reassign their server groups manually.
  3. :tada: Done! Enjoy a clean and decluttered SQL database.

:warning: Known Issues:

  • Changing Ports:
    If hosted on a root server and you want to change the port, stop the server again, open tsserver.sqlitedb, go to the Servers table, and edit the port manually (default: 9987).
  • User-Specific Properties:
    You cannot migrate user-specific properties like their group assignments.
    TS6 changed how UIDs (Unique User IDs) work, so they won’t match up.
    Until there’s an official method to update UIDs accordingly, we have to live with it.
  • Still not seeing your server channels & groups?:
    Thats because you can have multiple virtualservers!
    Look into the TS6 DB under the table Servers it should only have one entry and the server_id should match up with the ones in all the other tables!
2 Likes

Or stay on TS3 until there is an option for this. I have been running our TS3 server since like 2016 and we really don’t want to loose all the user info. You CAN manually change the UUIDs over manually as users join back into the server and retain it but its a real pita!

Great writeup for this! Thank you!

Hey mate,

thank you for providing this little guide. :slight_smile:

I tried to replicate your guide but it does not work for me, apparently I’m doing something wrong. The Data from the TS3 DB is in the TS6 DB, when scrolling through everything is there, but when I start the TS6 Server nothing changes, no channels and no groups are there except the default ones.

I did delete the old tsserver.sqlite db, I also made sure the changes are written to the DB before closing it.

Any help/hints would be appreciated what I’ve could do wrong, but as far as I’m concerned I replicated the described steps 1:1.

Thanks in advance :slight_smile:

good that you point that out i guess its because you can have multiple virtualservers.
what you can try:

look into the TS6 DB under the table SERVERS it should only have one entry and the server_id should match up with the ones in the other tables!

hope that helps

1 Like

Hi mate,

That was indeed the problem, should’ve figured out that one myself… :smiley:

Thanks a lot for your quick response! <3

1 Like

Feel you there i had over 600+ users in the db but i know its only10-15 regulars so it was easy to give the key users the roles accordingly. For big userlists there could be a way to write a teamspeak bot that will look up the usernames and automatically assign the groups accordingly but I already see other security concerns in this method because of possible Imposters xD

Highly appreciated! :smiling_face: