[mythtv-users] Database update schema error with trunk utf8
Michael T. Dean
mtdean at thirdcontact.com
Wed Dec 17 23:22:15 UTC 2008
On 12/17/2008 05:58 PM, Tom Dexter wrote:
> On Wed, Dec 17, 2008 at 4:00 PM, Michael T. Dean wrote:
>
>> Yep. We've (finally) verified that, now. It took a lot of guidance
>> from Janne and a lot of people in IRC helping (by running tests for) us
>> to figure out the details. Now, we're hoping to figure out how to deal
>> with database servers that were configured to use the wrong charset.
>>
>> Also, I'd recommend *against* changing things at this point, though. If
>> you're a Gentoo user and you're /just starting/ to use Myth--i.e. you
>> have no mythconverg database--you should emerge mysql /with/ the latin1
>> use flag (so it doesn't set a server default of utf8--do /not/ use
>> -latin1). If you have /any/ mythconverg data, you probably should keep
>> using Myth as you have been for a couple of years--don't change your
>> mysql configuration--to give us time to figure out how to deal with the
>> issue.
>>
>> Note, also, that the "partial/new-hardware restore" instructions at
>> http://mythtv.org/docs/mythtv-HOWTO-23.html#ss23.7 are wrong and will
>> corrupt your database, so please do not follow them. I'll be updating
>> the restore script to fix the issue.
>>
> I'm a little confused on this.
And so were we. :)
> If you create the database using the
> sql that comes with mythtv:
>
> /usr/share/mythtv/database/mc.sql
>
> ...as I did when I first installed...there shouldn't be any issue,
> correct? That creates the mythconverg database with latin1 as the
> default character set.
If you're running on a system that specifies a server default character
set other than latin1, i.e. in my.cnf:
[mysqld]
character-set-server=utf8
default-character-set=utf8
there will be (have been) problems, whether you use mc.sql to create the
initial database or not. However, you are better off *not* changing
your server configuration (i.e. do not remove those lines or change the
value to latin1). If you change things now, you'll have "mixed"
corruption--some data will be corrupt and some will be correct--which is
/much/ harder to fix than "total" corruption (we will probably leave
"mixed" corruption for the user to fix).
We (especially Janne) are currently working to find a good way to test
for corruption before the database upgrade so we can just "do the right
thing." Once done, your data and your database should be good after the
upgrade to 0.22.
Also, now is a /very/ bad time for any Gentoo user (or anyone else who
has configured their my.cnf as above) to switch to trunk. If you change
to trunk, now, you will get data corruption because all the conversion
code is written with the expectation that the mythconverg database has
good data in it now. So, if you have mysqld configured as above and are
using -fixes, definitely stick with -fixes at least until we have a good
test for corruption in place.
Note that Gentoo users will see jibberish for non-ASCII characters in
the UI, OSD, etc., in 0.21-fixes (but they should have been seeing such
corruption ever since they started using a MySQL >=4.1 built with
-latin1)***. However, in theory, we will have things fixed by the time
0.22 is released such that everyone--with or without a proper MySQL
configuration--will have good data (as long as they don't have "mixed
corruption") and all their characters should work/look properly in the
UI (assuming proper font support, of course).
So, again, don't change anything as doing so will make things worse.
Mike
***I'm now relatively certain that the author of the "don't do this, it
will break things" page in the wiki (
http://www.mythtv.org/wiki/index.php/Utf8_Text_in_OSD ) was using a
system with mysqld configured as above, which is the only reason the
text in the OSD was not working properly for him/her.
More information about the mythtv-users
mailing list