web-dev-qa-db-fra.com

Paramètres lower_case_table_names dans MySQL 8.0.12

Je viens de compiler la version MySQL 8.0.12 dans un Ubuntu 16.0.4.

Après avoir suivi les instructions du site Web et créé le fichier my.cnf suivant:

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF

log_error = /var/log/mysql/error.log

# Remove case sensitive in table names
lower_case_table_names=1

J'obtiens l'erreur suivante:

2018-08-11T19:45:06.461585Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').

Que dois-je changer pour que le dictionnaire de données soit aligné sur les paramètres du serveur?

4
asuka

Conformément à cela link , lower_case_table_names doit être défini avec l'option --initialize.

1
Praveen E

J'ai eu le même problème et comme décrit ici https://bugs.mysql.com/bug.php?id=90695 cela n'est pas pris en charge hors de la boîte. Donc, la solution de contournement que j'ai faite pour le faire fonctionner était la suivante lower_case_table_names = 1 sur Ubuntu 18.04 ne permet pas à mysql de démarrer

1
Christoph Adamakis

La documentation MySQL dit

lower_case_table_names ne peut être configuré que lors de l'initialisation du serveur. La modification du paramètre lower_case_table_names après l'initialisation du serveur est interdite.

https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html

0
Avinash Pawar

Pour résoudre ce problème,

  1. Prenez simplement la sauvegarde du schéma db existant en utilisant la commande suivante dans le dossier bin (/ usr/local/mysql/bin) ./ mysqldump -uroot -p password> dump.sql

  2. Une fois la sauvegarde effectuée, supprimez le dossier de données existant dans Mysql Home (/ usr/local/mysql /) à l'aide de la commande rm -rf data

  3. Ajoutez maintenant la configuration comme "lower_case_table_names = 1" dans my.cnf sous section MYSQLD (/etc/my.cnf)

  4. Maintenant, initialisez le répertoire de données à l'aide de la commande suivante dans le répertoire bin (/ usr/local/mysql/bin)

Pour le mode sécurisé ./mysqld --defaults-file =/etc/my.cnf --initialize --user = mysql --console

Pour le mode non sécurisé ./mysqld --defaults-file =/etc/my.cnf --initialize-insecure --user = mysql --console

  1. Une fois le répertoire de données initialisé, pour le mode non sécurisé répétez l'installation à nouveau et pour le mode sécurisé utilisez le mot de passe root qui est initialisé pendant l'exécution de l'initialisation du répertoire de données.

  2. Maintenant, importez le fichier de vidage existant dans le serveur Mysql en utilisant la commande dans le répertoire (/ usr/local/mysql/bin)

./ mysql -uroot -p mot de passe <file.sql

0
ARUN DEEPAK

Pour résoudre votre problème:

1. arrêtez mysql:

systemctl stop  mysql

2. nettoyer le répertoire de données ou changer la valeur par défaut, ce qui suit est pour les nouvelles installations, si vous avez des données dans votre base de données BACK UP les au préalable

rm -rf /var/lib/mysql

3.Insérez lower_case_table_names = 1 dans votre my.cnf:

[mysqld]
lower_case_table_names=1

4. recommencez

systemctl start mysqld
0
Behdad