Bug #30678 server can't detect/find language file
Submitted: 28 Aug 2007 20:32 Modified: 19 Oct 2007 9:23
Reporter: Alexey Stroganov Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Packaging Severity:S1 (Critical)
Version:pre-5.0.48-enterpise, 5.1.21, 5.0.44-sp1 OS:Any
Assigned to: Daniel Fischer CPU Architecture:Any

[28 Aug 2007 20:32] Alexey Stroganov
Description:
I tried to start mysql server with following cmd line and it fails to find/detect 
language file:

mysql-enterprise-5.0.48-linux-i686-glibc23 # ./bin/mysqld --datadir=/data0/datadir/ --basedir=.
070828 21:36:51 [ERROR] Can't find messagefile '.../mysql-enterprise-5.0.48-linux-i686-glibc23/share/english/errmsg.sys'
070828 21:36:51 [ERROR] Aborting

It reports that it can't find message file share/english/errmsg.sys although
that correct path is share/mysql/english/errmsg.sys

How to repeat:
run mysql server from 5.0.48-pre
[29 Aug 2007 13:03] Daniel Fischer
Bug will not be present in the final 5.0.48 binaries.
[29 Aug 2007 23:51] Kolbe Kegel
This is also present in 5.1.21 release binaries, sadly...
[30 Aug 2007 5:24] Daniel Fischer
In this case it will also be fixed in 5.1.22.
[31 Aug 2007 2:06] Paul DuBois
Noted in 5.1.22 changelog.

mysql_install_db could fail to find its message file.

Also added a note to 5.1.21 changelog noting the problem and how to solve it.
[7 Sep 2007 8:06] Daniel Fischer
Bug#30765 was marked as a duplicate of this bug.
[11 Sep 2007 17:35] Kolbe Kegel
This bug affects newly-released 5.0.44-sp1 binaries.
[11 Sep 2007 18:17] Kolbe Kegel
This bug means that the server *will not start* unless you use the
--language option to tell it to look in a non-standard location for its
language files.

The real problem is that the "mysql" path component has been omitted
from the location mysqld is searching by default.

For example:

070911  9:46:14 [ERROR] Can't find messagefile
'/home/kolbe/MySQL/inst/mysql-enterprise-gpl-5.0.44sp1-linux-x86_64-glibc23/share/english/errmsg.sys'

Meanwhile, the appropriate errmsg.sys file is actually located here:

/home/kolbe/MySQL/inst/mysql-enterprise-gpl-5.0.44sp1-linux-x86_64-glibc23/share/mysql/english/errmsg.sys

So, you must start the server (and run mysql_install_db) like this:

mysqld_safe
--language=/home/kolbe/MySQL/inst/mysql-enterprise-gpl-5.0.44sp1-linux-x86_64-glibc23/share/mysql/english/

You can also add this setting to the [mysqld] section of your my.cnf file.
[11 Sep 2007 19:50] Kolbe Kegel
Another workaround is to create symlinks by cd-ing to the "share' subdirectory of the basedir where you unpacked the TGZ archive and executing this command:

  ln -s mysql/* .

You should then be able to start the server normally.
[11 Sep 2007 23:53] Anderson Vitous
The symlink workaround doesn't help mysql_install_db.  Our onsite installations already pass 'language' to mysqld/mysqld_safe, but I needed to add 'language' *and* 'datadir' options to mysql_install_db invocation so it would run properly (first time a new database port is started.)
[15 Sep 2007 2:10] James Day
Corrected binaries were released as 5.0.44sp1a.
[26 Sep 2007 7:08] Daniel Fischer
Bug#31200 was marked as a duplicate of this bug.
[19 Oct 2007 9:23] Daniel Fischer
Fixed outside the server source.
[12 Dec 2007 13:19] Daniel Fischer
Bug#33113 was marked as a duplicate of this bug.