KIDINK^: Did you run the mariadb_fix_latin_utf8.sql script on a mysql client connected to your teamspeak database?
We are migrating towards a new forum system located at community.teamspeak.com, as such this forum will become read-only on January 29, 2020
KIDINK^: Did you run the mariadb_fix_latin_utf8.sql script on a mysql client connected to your teamspeak database?
How many times did it say that? There is a chance that you already had some bad characters in the client names for example. Did you use a special libmysqlclient before?
I would like to know if you mean the script could not convert one or a few rows, or if it stopped working after the error, and leave things half converted
Hello !
only once when I just execute in PHPMYADMIN.
Web server
lighttpd/1.4.31
Database client version: libmysql - 5.5.38
PHP extension: mysqli
Database server
Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 5.5.39-MariaDB-1~wheezy - mariadb.org binary distribution
Protocol version: 10
User: [email protected]
Server charset: UTF-8 Unicode (utf8)
Today I just execute the script again and works well dunno how, during when server is Online, before when I had this problem server were Offline. I tried couple of times always had the error what I wrote in previously post yesterday, showed me error once with record:
MySQL said: Documentation
#1300 - Invalid utf8mb4 character string: 'D34C45'
My LOG from PHPMYADMIN:
Before I used old mysqllib15off, just deleted completely yesterday and installed new MariaDB client and server.Code:-- script to fix the problem that utf8 data from ts3 client was interpreted as latin1. -- note that this script requires a user that is allowed to create temporary tables -- undo latin1->utf8 reencoding of utf8 data UPDATE channel_properties SET ident = CONVERT(CAST(CONVERT(ident USING 'latin1') AS BINARY) USING 'utf8mb4'), value = CONVERT(CAST(CONVERT(value USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE client_properties SET ident = CONVERT(CAST(CONVERT(ident USING 'latin1') AS BINARY) USING 'utf8mb4'), value = CONVERT(CAST(CONVERT(value USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE clients SET client_unique_id = CONVERT(CAST(CONVERT(client_unique_id USING 'latin1') AS BINARY) USING 'utf8mb4'), client_nickname = CONVERT(CAST(CONVERT(client_nickname USING 'latin1') AS BINARY) USING 'utf8mb4'), client_login_name = CONVERT(CAST(CONVERT(client_login_name USING 'latin1') AS BINARY) USING 'utf8mb4'), client_login_password = CONVERT(CAST(CONVERT(client_login_password USING 'latin1') AS BINARY) USING 'utf8mb4'), client_lastip = CONVERT(CAST(CONVERT(client_lastip USING 'latin1') AS BINARY) USING 'utf8mb4');# 5 rows affected. UPDATE groups_channel SET name = CONVERT(CAST(CONVERT(name USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE groups_server SET name = CONVERT(CAST(CONVERT(name USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE perm_channel SET perm_id = CONVERT(CAST(CONVERT(perm_id USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE perm_channel_clients SET perm_id = CONVERT(CAST(CONVERT(perm_id USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE perm_channel_groups SET perm_id = CONVERT(CAST(CONVERT(perm_id USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE perm_client SET perm_id = CONVERT(CAST(CONVERT(perm_id USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE perm_server_group SET perm_id = CONVERT(CAST(CONVERT(perm_id USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE bindings SET ip = CONVERT(CAST(CONVERT(ip USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE server_properties SET ident = CONVERT(CAST(CONVERT(ident USING 'latin1') AS BINARY) USING 'utf8mb4'), value = CONVERT(CAST(CONVERT(value USING 'latin1') AS BINARY) USING 'utf8mb4');# 2 rows affected. UPDATE servers SET server_machine_id = CONVERT(CAST(CONVERT(server_machine_id USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE tokens SET token_key = CONVERT(CAST(CONVERT(token_key USING 'latin1') AS BINARY) USING 'utf8mb4'), token_description = CONVERT(CAST(CONVERT(token_description USING 'latin1') AS BINARY) USING 'utf8mb4'), token_customset = CONVERT(CAST(CONVERT(token_customset USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE messages SET message_from_client_uid = CONVERT(CAST(CONVERT(message_from_client_uid USING 'latin1') AS BINARY) USING 'utf8mb4'), message_subject = CONVERT(CAST(CONVERT(message_subject USING 'latin1') AS BINARY) USING 'utf8mb4'), message_msg = CONVERT(CAST(CONVERT(message_msg USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE complains SET complain_message = CONVERT(CAST(CONVERT(complain_message USING 'latin1') AS BINARY) USING 'utf8mb4'), complain_hash = CONVERT(CAST(CONVERT(complain_hash USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE bans SET ban_ip = CONVERT(CAST(CONVERT(ban_ip USING 'latin1') AS BINARY) USING 'utf8mb4'), ban_name = CONVERT(CAST(CONVERT(ban_name USING 'latin1') AS BINARY) USING 'utf8mb4'), ban_uid = CONVERT(CAST(CONVERT(ban_uid USING 'latin1') AS BINARY) USING 'utf8mb4'), ban_invoker_uid = CONVERT(CAST(CONVERT(ban_invoker_uid USING 'latin1') AS BINARY) USING 'utf8mb4'), ban_invoker_name = CONVERT(CAST(CONVERT(ban_invoker_name USING 'latin1') AS BINARY) USING 'utf8mb4'), ban_reason = CONVERT(CAST(CONVERT(ban_reason USING 'latin1') AS BINARY) USING 'utf8mb4'), ban_hash = CONVERT(CAST(CONVERT(ban_hash USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE instance_properties SET string_id = CONVERT(CAST(CONVERT(string_id USING 'latin1') AS BINARY) USING 'utf8mb4'), ident = CONVERT(CAST(CONVERT(ident USING 'latin1') AS BINARY) USING 'utf8mb4'), value = CONVERT(CAST(CONVERT(value USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). UPDATE custom_fields SET ident = CONVERT(CAST(CONVERT(ident USING 'latin1') AS BINARY) USING 'utf8mb4'), value = CONVERT(CAST(CONVERT(value USING 'latin1') AS BINARY) USING 'utf8mb4');# MySQL returned an empty result set (i.e. zero rows). -- deduplicate server and channelgroup names that could have occured because of truncation CREATE TEMPORARY TABLE groups_server_dups ENGINE=MEMORY AS (select server_id, name from groups_server group by server_id, name having count(*)>1);# MySQL returned an empty result set (i.e. zero rows). UPDATE groups_server u INNER JOIN groups_server_dups j ON j.server_id = u.server_id and j.name=u.name SET u.name = CONCAT(u.name,u.group_id);# MySQL returned an empty result set (i.e. zero rows). DROP TABLE groups_server_dups;# MySQL returned an empty result set (i.e. zero rows). CREATE TEMPORARY TABLE groups_channel_dups ENGINE=MEMORY AS (select server_id, name from groups_channel group by server_id, name having count(*)>1);# MySQL returned an empty result set (i.e. zero rows). UPDATE groups_channel u INNER JOIN groups_channel_dups j ON j.server_id = u.server_id and j.name=u.name SET u.name = CONCAT(u.name,u.group_id);# MySQL returned an empty result set (i.e. zero rows). DROP TABLE groups_channel_dups;# MySQL returned an empty result set (i.e. zero rows).
Last edited by hunterpl; August 8th, 2014 at 10:01 PM.
Ah finally a new version to experiment with! I was kind of hoping for some more user-level features/abilities but still, having something new to test is always nice. Thanks dev team.
So what if I am running MariaDB 10 already... will I just need to run the conversion?
(Not testing the pre-release, just planning ready for stable release).
yes.
The first script 'convert_mysql_to_mariadb.sql' converts an existing database. Basically the conversion is changing the currently used character set to 'utf8mb4'. Actually it has nothing to do with differences between MySQL or MariaDB and more about design changes in TeamSpeak. This script also sets a value in the DB. The TS3 server will not start without this value. This is to make sure you run this script.
The second script, 'mariadb_fix_latin_utf8.sql' fixes bad character storage in the DB as a result of a bug in the previous TeamSpeak 3 servers.
It is necessary to run the first script.
It is necessary to run the second script, unless the libmysqlclient on the system where ts3 Server ran had a compile-time default character set of 'utf8'. In practice this means everyone has to run this script.
The server 3.0.11 seems to run fine under Centos 6.5 with sqlite here on a test server, upgrading from an existing 3.0.10.3 with sqlite.
I like to customize the permissions on ServerQuery client to allow them to see into extra channels and various other things. But now I am completely unable to tweak any permissions on ServerQuery client permissions area. I cannot alter channel subscribe, query client view power, nothing will let me change it on a brand new server... This is not good.
Edit:
Nor can I even assign server groups to it to allow a customized ability to see or block ability to see into channels from query clients and websites. This is really bad and has crippled my ability to keep areas private only from query clients or customize things in general for query clients. I hope this gets resolved. There is currently no way to alter anything on it with this beta. This is really bad.
And what does not work exactly with the Guest Query?
The only change was, that negate (set in Server Query Guest) overwrites the normal Guest permission. You still can do the same things as before as long negate isn't set in "Server Query Guest" group.
-----------------------
I hope you are not talking about
1. Editing query permissions with the client -> We do not support this way to modify Query groups
2. Insufficient permission modify power -> Login into the Query as serveradmin to modify these Query Guest permissions.
When sending me private messages: Please make sure to include reference link to your forum thread or post.
TeamSpeak FAQ || What should i report, when i open a client thread?
Here are the steps.
• Create a new fresh beta server
• Obtain Server Admin from using the token
• Go to client permissions
• Type in ServerQuery and press enter
• Attempt to give this query user a channel subscribe power, or alter it's query view clients or anything else.
Result: insufficient client permissions (failed on i_client_needed_permission_modify_power)
Edit: You need to login once to the server's query interface as an anonymous query client so you can edit it's permissions I think, otherwise it does not exist.
The error message you're getting is perfectly normal as ServerQuery guest clients have a i_client_needed_permission_modify_power of 100. You can in fact only modify the permissions the way you want to if you have a i_client_permission_modify_power of 100 or more... This worked for you in previous server releases as there was a permission system bug that caused the server to (partially) ignore the default ServerQuery group as soon as you selected a virtual server... meaning that the permissions of both groups were applied but handled in a wrong way (overwritten with lower values, negated ignored, etc). This has been fixed and the permissions now work as they were originally intended to.
Anyway... your way is actually a very weird way (that again never should have worked) to do this as this requires 1) a ServerQuery guest client connected at least one time and 2) might not be permanent as the ServerQuery guest db entry will be purged due to inactivity.
Why not simply assigning the permissions you need to the ServerQuery guest group (if you need them to be global) or to the regular guest group (if you want to do this on a per-server basis)? The fixed permissions also give you much more flexibility as you can work with the negated flag now.
When sending PMs please make sure to include a reference link to the thread in question in the body of your message.
How do you assign them to a serverquery guest group?
Plus you may think this is weird, but for me it has worked out perfectly. This way I can allow websites to see more channels than people can when they are in the server to prevent spam of more important areas. By customizing the permissions of ServerQuery I have been able to get the exact amount of web exposure and to ensure people are adding to the server's online users count while preventing trolls and spammers from messaging people in those channels because users themselves cannot enter or see who is inside. So if you know of a way I can assign permissions to a serverquery guest group I would do that. Bare in mind that I have a rented server so I do not have global access to the whole thing.
What ever I find out about permissions, I always maximize my functionality by making the most of them. This has lead to some things I do being called weird or "You are using this in a way that was not intended by the developers" but the fact is I figure things out and get the functionality I desire and only TeamSpeak 3 can do these things. It is not nice when something breaks that I have been using for years.
There's not A ServerQuery guest group... only THE ServerQuery guest group. This GLOBAL group (usually ID 1) is used for every ServerQuery client connected to a virtual server unless the user is authenticated.
Lets assume that you have a script that somehow requres the b_virtualserver_clientlist permission. Here are some possibilities on how to configure this:
1. Allow execution of the clientlist command on ALL virtual servers
2. Allow execution of the clientlist command on SINGLE virtual serversCode:ServerQuery Guest | Value: 1, Skip: 0, Negated: 0 Server Guest | not set
3. Allow execution of the clientlist command on ALL virtual servers EXCEPT ONECode:ServerQuery Guest | not set Server Guest | Value: 1, Skip: 0, Negated: 0
The is the way to configure this intended by the devs and this was possible since the initial release of TS3. However... there's one specific case that caused issues due to the server bug I mentioned in my last posting.Code:ServerQuery Guest | Value: 1, Skip: 0, Negated: 0 Server Guest | Value: 0, Skip: 0, Negated: 1
Let's say your regular guest group has the ability to create temporary channels on your server... as you can see in the three examples above, when a guest can create channels, a ServerQuery guest can also create channels. This lead to people generating spam by creating a lot of channels or sending messages with the typical "Join my Server 1.2.3.4 it's FREE" stuff.
The easiest way to prevent ServerQuery guests from creating channels is to configure the b_channel_create_temporary permission like this:
The negated value of 0 configured for the ServerQuery guest group overwrites the values coming from other groups, thus preventing the creation of temporary channels. However, this did not work in server releases prior to 3.0.11 as the server ignored the negated and skip flags on the ServerQuery guest group and the permission values were overwritten.Code:ServerQuery Guest | Value: 0, Skip: 0, Negated: 1 Server Guest | does not matter
The way you configured this in the past is still possible when you lower the value for i_client_needed_permission_modify_power on the ServerQuery guest group to 75. But I'd strongly recommend not to do this.
In short... this is a good and very important fix that provides greater flexibility and security (as regular ServerAdmins were never meant to be able to modify ServerQuery groups).
My apologies...
![]()
Last edited by ScP; August 11th, 2014 at 02:33 PM.
There are currently 1 users browsing this thread. (0 members and 1 guests)