Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.6.11
Description
In the official MariaDB container image, the old_mode variable - when set at the command line - behaves inconsistently with a locally-installed version of MariaDB 10.6.11 on the same machine.
In addition, the command-line argument handling is inconsistent for string-valued flags when setting them to the empty string.
Environment:
- Docker client and server: Docker Engine Community, 20.10.21
- Host: Rocky Linux 8.7 on x64
- MariaDB version: 10.6.11, installed via RPM or run inside a Docker container.
docker run --rm -e=MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:10.6 --old-mode=""
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
|
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Initializing database files
|
ERROR: 1071 Specified key was too long; max key length is 2300 bytes
|
2022-11-29 11:05:05 0 [ERROR] Aborting
|
|
Installation of system tables failed! Examine the logs in
|
/var/lib/mysql/ for more information.
|
|
The problem could be conflicting information in an external
|
my.cnf files. You can ignore these by doing:
|
|
shell> /usr/bin/mariadb-install-db --defaults-file=~/.my.cnf
|
|
You can also try to start the mysqld daemon with:
|
|
shell> /usr/sbin/mariadbd --skip-grant-tables --general-log &
|
|
and use the command line tool /usr/bin/mariadb
|
to connect to the mysql database and look at the grant tables:
|
|
shell> /usr/bin/mysql -u root mysql
|
mysql> show tables;
|
|
Try 'mysqld --help' if you have problems with paths. Using
|
--general-log gives you a log in /var/lib/mysql/ that may be helpful.
|
|
The latest information about mysql_install_db is available at
|
https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
|
You can find the latest source at https://downloads.mariadb.org and
|
the maria-discuss email list at https://launchpad.net/~maria-discuss
|
|
Please check all of the above before submitting a bug report
|
at https://mariadb.org/jira
|
docker run --rm -e=MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:10.6 --old-mode ""
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
|
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Initializing database files
|
2022-11-29 11:06:50 0 [ERROR] /usr/sbin/mariadbd: Error while setting value '--default-time-zone=SYSTEM' to 'old_mode'
|
|
Installation of system tables failed! Examine the logs in
|
/var/lib/mysql/ for more information.
|
[...]
|
Despite the message given, no logs are left in /var/lib/mysql/ inside the container.
The behaviour changes when the /var/lib/mysql directory is set as a mount inside the container. The first run fails with the "2300 bytes" error, while the second run with the same volume mounted succeeds. (e.g. docker run --mount=type=volume,source=mariadb-test,destination=/var/lib/mysql --rm -e=MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:10.6 --old-mode="")
Attachments
Issue Links
- relates to
-
MDEV-28915 mysql_upgrade fails due to old_mode="", with "Cannot load from mysql.proc. The table is probably corrupted"
-
- Closed
-
Producable without containers:
$ mkdir -p /tmp/${PWD##*/}-datadir && scripts/mysql_install_db --no-defaults --srcdir=$OLDPWD --builddir=$PWD --datadir=/tmp/${PWD##*/}-datadir --verbose --old-mode=
Installing MariaDB/MySQL system tables in '/tmp/build-mariadb-server-10.6-datadir' ...
2022-11-30 11:26:35 0 [Note] /home/dan/repos/build-mariadb-server-10.6/sql/mysqld (server 10.6.12-MariaDB) starting as process 383074 ...
2022-11-30 11:26:35 0 [Note] InnoDB: The first data file './ibdata1' did not exist. A new tablespace will be created!
2022-11-30 11:26:35 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2022-11-30 11:26:35 0 [Note] InnoDB: Number of pools: 1
2022-11-30 11:26:35 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2022-11-30 11:26:35 0 [Note] InnoDB: Using liburing
2022-11-30 11:26:35 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
2022-11-30 11:26:35 0 [Note] InnoDB: Completed initialization of buffer pool
2022-11-30 11:26:35 0 [Note] InnoDB: Setting O_DIRECT on file ./ibdata1 failed
2022-11-30 11:26:35 0 [Note] InnoDB: Setting file './ibdata1' size to 12 MB. Physically writing the file full; Please wait ...
2022-11-30 11:26:35 0 [Note] InnoDB: File './ibdata1' size is now 12 MB.
2022-11-30 11:26:35 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 100663296 bytes
2022-11-30 11:26:35 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2022-11-30 11:26:35 0 [Note] InnoDB: New log file created, LSN=10313
2022-11-30 11:26:35 0 [Note] InnoDB: Doublewrite buffer not found: creating new
2022-11-30 11:26:35 0 [Note] InnoDB: Doublewrite buffer created
2022-11-30 11:26:35 0 [Note] InnoDB: 128 rollback segments are active.
2022-11-30 11:26:35 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2022-11-30 11:26:35 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2022-11-30 11:26:35 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2022-11-30 11:26:35 0 [Note] InnoDB: 10.6.12 started; log sequence number 0; transaction id 3
2022-11-30 11:26:35 0 [Note] CONNECT: Version 1.07.0002 March 22, 2021
ERROR: 1071 Specified key was too long; max key length is 2300 bytes