0

Works:

SET lc_time_names='en_US';

Fails with "Variable 'lc_time_names' can't be set to the value of 'de_DE'":

SET lc_time_names='de_DE';

This seemed simple to me. I guess, I have to install that locale but no search for "mariadb install locale" or "mariadb add locale" returned anything helpful. So I thought the available locales might be tied to the OS. I am using macOS, so locale -a lists me locales galore, "de_DE" is among them.

I ran the exact same database with that locale without problems but had to update macOS and reinstall php via brew install php@8.0. This updated more than just php. Afterwards, the error appeared.

danblack
  • 8,258
  • 2
  • 12
  • 28
Leif
  • 105
  • 2

1 Answers1

1

I managed to produce this. When the SET lc_time_names='de_DE'; was executed I got the following error immediately in the server log:

 2023-02-10  9:30:48 3 [ERROR] Can't find messagefile '/usr/local/mysql/share/errmsg.sys'

I found it odd how it affected some locale names and not others.

I corrected this by adding the configuration option lc-messages-dir=PATH_TO_ERRMSG.SYS/share/english. I'm not totally sure where brew installs it but it might be under /usr/local.

The ABI error with locales.so might indicate there's some remains of a MySQL or other MariaDB server there, which could explain the issue with lc-message-dir.

danblack
  • 8,258
  • 2
  • 12
  • 28