Wie erstelle ich diese Tabelle? # 1071 - Der angegebene Schlüssel war zu lang; Die maximale Schlüssellänge beträgt 1000 Byte

8
%Vor%

Fehler: '# 1071 - Der angegebene Schlüssel war zu lang; Maximale Schlüssellänge ist 1000 Bytes

Warum kann ich diese Tabelle nicht erstellen? Was sollte ich ändern, um diese Tabelle zu erstellen?

    
Raplus 16.11.2013, 03:01
quelle

6 Antworten

9

PRIMARY KEY (realurl,catagory) hat eine Größe von (200 + 200) * 3 = 1.200 Bytes, was größer ist als die Grenze von 1.000 Byte, da MySQL utf8-codierte Zeichen als 3 Bytes speichert.

Sie müssen die Größe der Felder, aus denen der Primärschlüssel besteht, verringern, oder Sie können die MySQL-Version auf die neueste Version aktualisieren.

Siehe auch diese andere Frage: Fehler: Angegebener Schlüssel war zu lang; Die maximale Schlüssellänge beträgt 1000 Byte. .

    
RSaha 16.11.2013, 03:29
quelle
8

Dieses häufige Problem tritt meistens auf, weil MySql standardmäßig die Zeichenbeschränkung für Spaltennamen verwendet. Was ist:

%Vor%

Was wir brauchen, ist unten angegeben:

%Vor%

Um dieses Problem loszuwerden, würde ich vorschlagen, utf8 während der Erstellung der Datenbank zusammen mit COLLATE set to utf8_general_ci zu verwenden. Ich bevorzuge den Befehl unten, um eine Datenbank in MariaDb oder MySql zu erstellen:

%Vor%

Der obige Befehl hat mir in meinem speziellen Szenario geholfen. Ich verwende ' Sequelize ', um Tabellen zur Laufzeit zu erstellen. Als ich versuchte, meinen Code in Ubuntu auszuführen, nachdem ich die Datenbank mit dem einfachen 'CREATE DATABASE' Befehl erstellt hatte, bekam ich diesen Fehler 1071.

Wenn ich über den Befehl mit dem utf8-Zeichensatz und der Sortierfunktion lief, half mir das, den Fehler loszuwerden.

    
S.Mishra 27.02.2017 22:56
quelle
5

MySQL hat eine Präfix-Begrenzung von 767 Bytes in InnoDB und 1000 Bytes in MyISAM. Dies war für mich nie ein Problem, bis ich begann, UTF-16 als Zeichensatz für eine meiner Datenbanken zu verwenden. UTF-16 kann bis zu 4 Bytes pro Zeichen verwenden, dh in einer InnoDB-Tabelle dürfen keine Schlüssel länger als 191 Zeichen sein.

    
Rajasekar Gunasekaran 16.11.2013 03:35
quelle
3

Ich habe dieses Problem gelöst. Erstellen Sie Ihre Datenbank mit dem folgenden Befehl.

%Vor%     
Nids Barthwal 20.12.2016 10:58
quelle
0

Wenn Sie innodb_log_file_size geändert haben, versuchen Sie, den vorherigen Wert wiederherzustellen.

    
AnkitK 05.08.2015 11:25
quelle
0

Sie können "Ihre Datenbank" löschen und erneut mit:

erstellen %Vor%

oder ändern Sie die Konfigurationsdatei. Öffne /etc/mysql/mariadb.conf.d/50-server.cnf und ändere:

%Vor%     
Ivan Kukurudziak 12.03.2018 11:11
quelle

Tags und Links