sql >> Databasteknik >  >> RDS >> Mysql

lower_case_table_names=1 på Ubuntu 18.04 låter inte mysql starta

Följ stegen nedan för att få detta att fungera i MySQL 8.0 och linux.

  1. Säkerhetskopiera mysql-schemat innan du utför följande steg med

    mysqldump -h localhost -u root -p mysql> /home/användarnamn/dumps/mysqldump.sql

och sluta sedan använda mysql

sudo service mysql stop
  1. flytta eller ta bort katalogen /var/lib/mysql. Detta kommer att radera alla databaser!!!!

    mv /var/lib/mysql /tmp/mysql
    
  2. Skapa en ny /var/lib/mysql-katalog och gör mysql-användare som ägare

    mkdir /var/lib/mysql
    chown -R mysql:mysql /var/lib/mysql
    chmod 750 /var/lib/mysql
    
  3. redigera /etc/mysql/mysql.conf.d/mysqld.cnf och lägg till följande rad efter

    [mysqld]
    
    lower_case_table_names=1
    
  4. Initiera mysql med följande

    mysqld --defaults-file=/etc/mysql/my.cnf --initialize lower_case_table_names=1 --user=mysql --console
    

Ändra standardfilen med den faktiska platsen för din standardfil. Mer information om mysql-initiering här:https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html

  1. (Valfritt) Upprepa

    chown -R mysql:mysql /var/lib/mysql
    chmod 750 /var/lib/mysql
    

om ägaren till filerna i /var/lib/mysql inte är mysql

  1. Starta mysql med

    sudo service mysql start
    
  2. Om allt fungerade korrekt, öppna mysql med

    mysql -u root -p
    

och genom att köra den här frågan

SHOW VARIABLES where Variable_name like 'lower%';

du kommer att få

'lower_case_table_names', '1'
  1. Återställ mysql-schemat med dumpen som skapades i steg 0.

  2. Kör mysql_upgrade för att skapa sys-schemat



  1. SQLite har

  2. Oracle:'=ANY()' kontra 'IN ()'

  3. Varför är CONCAT() inte som standard som standardteckenuppsättning i MySQL?

  4. Få det näst högsta värdet i en MySQL-tabell