Registro de paso de parámetro de MySQL 8.0 versión lower_case_table_names

Hoy instalé MySQL 8.0.23 usando un paquete binario y no configuré lower_case_table_names = 1 en my.cnf por adelantado durante la inicialización. Es normal iniciar MySQL después de la inicialización. Pensando en agregar un parámetro que ignora mayúsculas y minúsculas en my.cnf, inicie MySQL después de agregarlo, pero no puede comenzar, verifique el registro y encuentre el siguiente mensaje de error:

[2021/3/18 10:23:27] 2021-03-18T10:23:04.224077+08:00 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
[2021/3/18 10:23:27] 2021-03-18T10:23:05.274659+08:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
[2021/3/18 10:23:27] 2021-03-18T10:23:05.308562+08:00 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
[2021/3/18 10:23:27] 2021-03-18T10:23:05.308950+08:00 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
[2021/3/18 10:23:27] 2021-03-18T10:23:05.309295+08:00 0 [ERROR] [MY-010119] [Server] Aborting
[2021/3/18 10:23:27] 2021-03-18T10:23:05.861083+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.23)  MySQL Community Server - GPL.

Si hay algún problema, resuélvalo.

El idioma primero explica el parámetro lower_case_table_names.

lower_case_table_names es un atributo de mysql que distingue entre mayúsculas y minúsculas. Este parámetro no se puede modificar dinámicamente.

Valores predeterminados:

  • El valor predeterminado en Unix, Linux es 0

  • El valor predeterminado en Windows es 1

  • El valor predeterminado en Mac OS es 2

Ver la documentación oficial de MySQL:

Notas de la versión de MySQL 8.0 - Cambios en MySQL 8.0.17 (2019-07-22, Disponibilidad general) - Funcionalidad agregada o modificada 有 记录 :

In MySQL 8.0, the lower_case_table_names variable can only be configured when the MySQL server is initialized.

Consulte el documento 8.0 del sitio web oficial (5.7.x no tiene este contenido), puede ver:

Hay un registro en Estructura del lenguaje-Nombres de objeto de esquema-Identificador de mayúsculas y minúsculas:

lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.
#意思是只能在初始化时指定 lower_case_table_names 参数,初始化之后该参数不允许修改。

Para el problema de configuración del caso, al comparar los documentos 8.0 y 5.7, encontrará que la versión 5.7 admite la modificación del parámetro lower_case_table_names después de la inicialización, y también proporciona un plan de migración para las bases de datos creadas con diferentes valores.

En 8.0, solo se admite especificar este parámetro durante la inicialización. Después de la inicialización, si se modifica este parámetro, se informará un error al inicio porque no se permite modificar este valor después de la inicialización.

Es fácil conocer las reglas de MySQL

Si no se requiere la migración de datos:

Elimine todos los archivos en el directorio de datos, reinicialice y especifique el valor lower_case_table_names.

Desinstale MySQL, luego reinstale, después de reinstalar, especifique el valor lower_case_table_names al inicializar la base de datos.

Si se requiere la migración de datos, los pasos generales son los siguientes:

Primero convierta el nombre de la base de datos, el nombre de la tabla y el nombre del campo al caso deseado y luego exporte los datos.

Reinicialice la base de datos con el nuevo valor lower_case_table_names.

Cree una nueva instancia e importe los datos exportados anteriormente.

Dos formas de especificar nombres de tablas en mayúsculas y minúsculas:

  1. Es válido establecer lower_case_table_names = 1 durante la inicialización, por ejemplo:
/usr/local/mysql/bin/mysqld  --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql --initialize --lower-case-table-names=1
  1. Antes de la inicialización, modifique el archivo my.cnf en linux y agregue minúsculas-table-names = 1 debajo del nodo de configuración [mysqld]

Supongo que te gusta

Origin blog.51cto.com/5924778/2673853
Recomendado
Clasificación