Domanda

create table check2(f1 varchar(20),f2 varchar(20));

crea una tabella con le regole di confronto predefinite latin1_general_ci;

alter table check2 collate latin1_general_cs;
show full columns from check2;

mostra i singoli confronto delle colonne 'latin1_general_ci'.

Quindi qual è l'effetto del comando alter table?

È stato utile?

Soluzione

Per modificare il set di caratteri predefinito e confronto di una tabella compresi quelli delle colonne esistenti (nota il la conversione di clausola):

alter table <some_table> convert to character set utf8mb4 collate utf8mb4_unicode_ci;

Modificato la risposta, grazie per il suggerimento di alcuni commenti:

Dovrebbe evitare di consigliare utf8.È quasi mai ciò che si vuole, e spesso porta a imprevisti pasticci.Il set di caratteri utf8 non è completamente compatibile con la codifica UTF-8.Il utf8mb4 set di caratteri è quello che si vuole se si desidera UTF-8. Ricco di Remer Mar 28 '18 alle 23:41

e

Che mi sembra abbastanza importante, sono contenta di leggere i commenti e grazie @RichRemer .Nikki , penso che si dovrebbe modificare la tua risposta considerando come molti punti di vista, questo si.Vedi qui https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8.html e qui Qual è la differenza tra utf8mb4 e set di caratteri utf8 in MySQL? – Paulpro Mar 12 alle 17:46

Altri suggerimenti

MySQL ha 4 livelli di collazione: Server, database, tabelle, colonne. Se si modifica la regola di confronto del server, database o una tabella, non si modifica l'impostazione per ogni colonna, ma si modificano le regole di confronto predefinite.

Ad esempio, se si cambia la regole di confronto predefinite di un database, ogni nuova tabella si crea nel database utilizzerà tale raccolta, e se si cambia la regole di confronto predefinite di una tabella, ogni colonna si crea in tale tabella otterrà che collazione.

Si imposta il confronto predefinite per la tavola; se si crea una nuova colonna, che dovrebbe essere correlate ai latin_general_ci - credo. Provare a specificare le regole di confronto per la colonna individuale e vedere se funziona. MySQL ha un comportamento davvero strano per quanto riguarda il modo in cui gestisce questo.

potrebbe essere necessario modificare lo schema non solo tabella

ALTER SCHEMA `<database name>`  DEFAULT CHARACTER SET utf8mb4  DEFAULT COLLATE utf8mb4_unicode_ci (as Rich said - utf8mb4);

(MariaDB 10)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top