Introduzione
Un confronto è un insieme di regole che definisce come confrontare e ordinare le stringhe di caratteri in un server di database. In questo tutorial, stiamo discutendo di un errore riscontrato durante il ripristino del database su un altro server.
Vediamo il problema e la soluzione al problema affrontato di recente:
Problema
Durante la migrazione di un'applicazione Web, ho ricevuto l'errore seguente durante il ripristino di un database su un altro server. L'id delle regole di confronto può variare in base alla versione di MySQL.
Messaggio di errore:
Error 1273 (HY000) at line 25 Unknown collation: 'utf8mb4_0900_ai_ci'
Soluzione
Dopo una piccola indagine, ho scoperto che il server MySQL in esecuzione sulla destinazione è una versione precedente rispetto all'origine. Quindi abbiamo ottenuto che il server di destinazione non contenga le regole di confronto del database richieste.
Quindi apportiamo una piccola modifica al file di backup per risolvere questo problema. Modificare il file di backup del database nell'editor di testo e sostituire "utf8mb4_0900_ai_ci" con "utf8mb4_general_ci" e "CHARSET=utf8mb4" con "CHARSET=utf8".
Sostituisci la stringa sottostante:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
con:
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Salva il tuo file e ripristina il database.
Gli utenti del sistema Linux possono utilizzare il comando sed per sostituire direttamente il testo nei file.
sed -i 's/utf8mb4_0900_ai_ci/utf8_general_ci/g' backup.sql
sed -i 's/CHARSET=utf8mb4/CHARSET=utf8/g' backup.sql
Il database è stato ripristinato con successo.
Conclusione
Spero che questa soluzione ti abbia aiutato a risolvere il problema "Unknown collation: 'utf8mb4_0900_ai_ci'".