#1071-podany klucz był za długi; maksymalna długość klucza to 767 bajtów

Kiedy wykonałem następujące polecenie:

ALTER TABLE `mytable` ADD UNIQUE (
`column1` ,
`column2`
);

Dostałem komunikat o błędzie:

#1071 - Specified key was too long; max key length is 767 bytes

Informacje o kolumnach 1 i kolumnach 2:

column1 varchar(20) utf8_general_ci
column2  varchar(500) utf8_general_ci

Myślę, że varchar(20) wymaga tylko 21 bajtów, podczas gdy varchar(500) wymaga tylko 501 bajtów. Więc suma bajtów wynosi 522, mniej niż 767. Dlaczego więc dostałem komunikat o błędzie?

#1071 - Specified key was too long; max key length is 767 bytes
Author: OMG Ponies, 2009-11-29

27 answers

767 bajtów to określone ograniczenie prefiksu dla tabel InnoDB w MySQL w wersji 5.6 (i wcześniejszych wersjach). 1000 bajtów dla tabel MyISAM. W MySQL w wersji 5.7 i wyżej limit ten został zwiększony do 3072 bajtów.

Musisz również pamiętać, że jeśli ustawisz indeks na polu big char lub varchar, które jest zakodowane w utf8mb4, musisz podzielić maksymalną długość przedrostka indeksu 767 bajtów (lub 3072 bajtów) przez 4, co daje 191. Wynika to z tego, że maksymalna długość znak utf8mb4 to cztery bajty. Dla znaku utf8 byłyby to trzy bajty, co daje maksymalną długość przedrostka indeksu wynoszącą 254.

Jedną z opcji jest umieszczenie dolnego limitu na polach VARCHAR.

Inną opcją (zgodnie z odpowiedzią na ten problem) jest uzyskanie podzbioru kolumny, a nie całej kwoty, tj.:

ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );

Tweak jak trzeba dostać klucz do zastosowania, ale zastanawiam się, czy warto byłoby przejrzeć swój model danych w tym zakresie Jednostka, aby sprawdzić, czy są ulepszenia, które pozwolą Ci wdrożyć zamierzone reguły biznesowe bez uderzania w ograniczenie MySQL.

 312
Author: OMG Ponies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-11 10:45:11

Jeśli ktoś ma problemy z INNODB / Utf-8 próbując umieścić indeks UNIQUE w polu VARCHAR(256), przełącz go na VARCHAR(255). Wydaje się, że 255 jest ograniczeniem.

 356
Author: PinkTurtle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 17:19:13

Kiedy osiągniesz limit. Ustaw następujące.

  • INNODB utf8 VARCHAR(255)
  • INNODB utf8mb4 VARCHAR(191)
 215
Author: Aley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-17 11:12:49

MySQL przyjmuje najgorszy rozmiar dla liczby bajtów na znak w łańcuchu. Dla kodowania MySQL 'utf8', to 3 bajty na znak, ponieważ kodowanie to nie pozwala na znaki poza U+FFFF. Dla kodowania MySQL 'utf8mb4' jest to 4 bajty na znak, ponieważ MySQL nazywa to rzeczywistym UTF-8.

Więc zakładając, że używasz 'utf8', Pierwsza kolumna zajmie 60 bajtów indeksu, a druga kolejne 1500.

 143
Author: morganwahl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-22 18:15:40

Uruchom to zapytanie przed zapytaniem:

SET @@global.innodb_large_prefix = 1;

To zwiększy limit do 3072 bytes.

 38
Author: Raza Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-04 20:12:23

Jakiego kodowania znaków używasz? Niektóre zestawy znaków (jak UTF-16, itd.) używają więcej niż jednego bajtu na znak.

 37
Author: Amber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-29 03:21:27

Rozwiązanie Dla Laravel Framework

Zgodnie z Laravel 5.4.* documentation ; musisz ustawić domyślną długość łańcucha wewnątrz

Boot

Metoda

App / Providers/AppServiceProvider.php

Plik w następujący sposób:

use Illuminate\Support\Facades\Schema;

public function boot() 
{
    Schema::defaultStringLength(191); 
}

Wyjaśnienie tej poprawki podane przez Laravel 5.4.* dokumentacja;

Laravel domyślnie używa zestawu znaków utf8mb4, który zawiera obsługa przechowywania "emotikon" w bazie danych. Jeśli używasz wersji MySQL starszej niż wersja 5.7.7 lub MariaDB starszej niż wersja 10.2.2, może być konieczne ręczne skonfigurowanie domyślnej długości ciągu generowanego przez migracje, aby MySQL mógł tworzyć dla nich indeksy. Można to skonfigurować, wywołując metodę Schema:: defaultStringLength wewnątrz AppServiceProvider

Alternatywnie można włączyć opcję innodb_large_prefix dla Twojego baza danych. Zapoznaj się z dokumentacją bazy danych, aby uzyskać instrukcje dotyczące jak prawidłowo włączyć tę opcję.

 23
Author: alishaukat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 15:06:47

Myślę, że varchar(20) wymaga tylko 21 bajtów, podczas gdy varchar (500) tylko wymaga 501 bajtów. Więc suma bajtów wynosi 522, mniej niż 767. Więc dlaczego czy dostałem komunikat o błędzie?

UTF8 wymaga 3 bajtów na znak do przechowywania ciągu znaków, więc w Twoim przypadku 20 + 500 znaków = 20*3+500*3 = 1560 bajtów, które jest więcej niż dozwolone 767 bajtów.

Limit dla UTF8 wynosi 767/3 = 255 znaków , dla UTF8mb4, który używa 4 bajtów na znak to 767/4 = 191 znaków.


Istnieją dwa rozwiązania tego problemu, jeśli potrzebujesz użyć dłuższej kolumny niż limit:

  1. użyj "tańszego" kodowania (takiego, które wymaga mniej bajtów na znak)
    W moim przypadku musiałem dodać unikalny indeks na kolumnie zawierającej ciąg SEO artykułu, ponieważ używam tylko znaków [A-z0-9\-] do SEO, użyłem latin1_general_ci, który używa tylko jednego bajtu na znak, a więc kolumna może mieć długość 767 bajtów.
  2. Utwórz hash z Twojej kolumny i użyj unikalnego indeksu tylko na tym
    Inną opcją dla mnie było stworzenie innej kolumny, która przechowywałaby hash SEO, kolumna ta miałaby klucz UNIQUE, aby zapewnić unikalne wartości SEO. Dodałbym również KEY indeks do oryginalnej kolumny SEO, aby przyspieszyć wyszukiwanie.
 21
Author: Buksy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-23 09:19:59
Specified key was too long; max key length is 767 bytes

Otrzymałeś tę wiadomość, ponieważ 1 bajt równa się 1 znak tylko wtedy, gdy używasz zestawu znaków latin-1. Jeśli użyjesz utf8, każdy znak będzie traktowany jako 3 bajty podczas definiowania kolumny kluczowej. Jeśli użyjesz utf8mb4, każdy znak będzie traktowany jako 4 bajty podczas definiowania kolumny kluczowej. Tak więc, musisz pomnożyć limit znaków swojego pola klucza przez, 1, 3 lub 4 (w moim przykładzie), aby określić liczbę bajtów, na które pole klucza próbuje zezwolić. Jeśli używasz uft8mb4, możesz tylko zdefiniuj 191 znaków dla natywnego, InnoDB, podstawowego pola klucza. Tylko nie naruszaj 767 bajtów.

 17
Author: Anthony Rutledge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-21 15:42:53

Możesz dodać kolumnę md5 długich kolumn

 15
Author: diyism,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-25 04:18:34

Odpowiedź o tym, dlaczego otrzymujesz komunikat o błędzie, została już udzielona przez wielu użytkowników tutaj. Moja odpowiedź jest o tym, jak naprawić i używać go tak, jak to jest.

Zobacz z ten link .

  1. otwórz klienta MySQL (lub klienta MariaDB). Jest to narzędzie wiersza poleceń.
  2. zapyta o hasło, wprowadź poprawne hasło.
  3. Wybierz bazę danych za pomocą tego polecenia use my_database_name;

Baza danych zmieniona

  1. set global innodb_large_prefix=on;

Zapytanie OK, 0 wierszy dotkniętych (0.00 sec)

  1. set global innodb_file_format=Barracuda;

Zapytanie OK, 0 wierszy dotkniętych (0.02 sec)

  1. przejdź do bazy danych na phpMyAdmin lub coś podobnego, aby ułatwić zarządzanie. > Wybierz bazę danych > wyświetl tabelę struktura > przejdź do zakładki operacje. > Zmień ROW_FORMAT na DYNAMIC i zapisz zmiany.
  2. przejdź do tabeli struktura zakładka > kliknij na Unique guzik.
  3. Zrobione. Teraz nie powinno mieć żadnych błędów.

Problem tej poprawki polega na tym, że wyeksportujesz db do innego serwera (na przykład z localhost do prawdziwego hosta) i nie możesz użyć linii poleceń MySQL na tym serwerze. Nie uda ci się.

 13
Author: vee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-07 11:12:44

Napotkaliśmy ten problem podczas próby dodania unikalnego indeksu do pola VARCHAR (255) przy użyciu utf8mb4. Chociaż problem jest już dobrze zarysowany, chciałem dodać kilka praktycznych porad, jak to rozwiązaliśmy i rozwiązaliśmy.

Podczas używania utf8mb4, znaki liczą się jako 4 bajty, podczas gdy w utf8 mogą być jako 3 bajty. Bazy danych InnoDB mają limit, że indeksy mogą zawierać tylko 767 bajtów. Więc używając utf8, możesz zapisać 255 znaków( 767/3 = 255), ale używając utf8mb4, możesz może przechowywać tylko 191 znaków(767/4 = 191).

Możesz dodawać zwykłe indeksy dla pól VARCHAR(255) używając utf8mb4, ale to, co się dzieje, to rozmiar indeksu jest automatycznie obcinany na 191 znaków - jak unique_key tutaj:

Sequel Pro screenshot pokazujący indeks obcięty na 191 znaków

Jest to w porządku, ponieważ zwykłe indeksy są używane do szybszego przeszukiwania danych przez MySQL. Całe pole nie musi być indeksowane.

Więc dlaczego MySQL obcina indeks automatycznie dla zwykłych indeksy, ale rzucać wyraźny błąd, gdy próbuje to zrobić dla unikalnych indeksów? Cóż, aby MySQL mógł dowiedzieć się, czy wstawiana lub aktualizowana wartość już istnieje, musi faktycznie indeksować całą wartość, a nie tylko jej część.

Pod koniec dnia, jeśli chcesz mieć unikalny indeks na polu, Cała zawartość pola musi pasować do indeksu. W przypadku utf8mb4 oznacza to zmniejszenie długości pola VARCHAR do 191 znaków lub mniej. Jeśli nie potrzebujesz utf8mb4 dla ta tabela lub pole, można upuścić go z powrotem do utf8 i być w stanie zachować swoje pola długości 255.

 11
Author: maknz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-15 23:59:56

Oto moja oryginalna odpowiedź:

Po prostu upuszczam bazę danych i odtwarzam tak, a błąd zniknie:

drop database if exists rhodes; create database rhodes default CHARACTER set utf8 default COLLATE utf8_general_ci;

Jednak to nie działa we wszystkich przypadkach.

W rzeczywistości jest to problem użycia indeksów na kolumnach VARCHAR z zestawem znaków utf8 (lub utf8mb4), z kolumnami VARCHAR, które mają więcej niż określoną długość znaków. W przypadku utf8mb4, pewna długość wynosi 191.

Proszę zapoznać się z sekcją długi indeks w w tym artykule więcej informacji na temat używania długich indeksów w bazie danych MySQL: http://hanoian.com/content/index.php/24-automate-the-converting-a-mysql-database-character-set-to-utf8mb4{[18]

 7
Author: Châu Hồng Lĩnh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-02 23:34:34

Poszperałem trochę w tym temacie w końcu dostałem jakieś niestandardowe zmiany

Dla MySQL workbench w wersji 6.3.7 dostępna jest graphical inter phase

  1. Uruchom Workbench i wybierz połączenie.
  2. przejdź do zarządzania lub instancji i wybierz opcje Plik.
  3. Jeśli Workbench poprosi Cię o pozwolenie na odczyt pliku konfiguracyjnego, a następnie Zezwól na to, naciskając dwa razy OK.
  4. na środku pojawia się okno opcji administratora pliku.
  5. Idź Do Zakładka InnoDB i sprawdź innodb_large_prefix, jeśli nie jest zaznaczona w sekcji Ogólne.
  6. ustaw wartość opcji innodb_default_row_format na dynamiczną.

Dla wersji poniżej 6.3.7 bezpośrednie opcje nie są dostępne, więc trzeba przejść z wierszem polecenia

  1. uruchom CMD jako administrator.
  2. przejdź do director gdzie serwer mysql jest instalowany w większości przypadków na "C:\Program Files\MySQL \ MySQL Server 5.7 \ bin" więc polecenie jest "cd \" "cd Program Files\MySQL\MySQL Serwer 5.7 \ bin".
  3. Teraz uruchom polecenie mysql-u userName-P databasescheema Teraz poprosił o hasło danego użytkownika. Podaj hasło i wprowadź w monit mysql.
  4. musimy ustawić kilka globalnych ustawień wprowadź poniższe polecenia jeden po drugim set global innodb_large_prefix = on; set global innodb_file_format=barracuda; set global innodb_file_per_table = true;
  5. Teraz na końcu musimy zmienić WIERSZ_FORMAT wymaganej tabeli domyślnie jej zwartość musimy ustawić ją na Dynamiczny.
  6. użyj następującego polecenia alter table table_name ROW_FORMAT=DYNAMIC;
  7. zrobione
 6
Author: Abhishek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 14:40:01

Zmień swoje zestawienie. Możesz użyć utf8_general_ci , który obsługuje prawie wszystkie

 5
Author: Nids Barthwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-29 09:15:20

Na podstawie kolumny podanej poniżej, Te 2 zmienne kolumny łańcuchowe używają utf8_general_ci collation (utf8 charset jest implikowany).

W MySQL, utf8 charset używa maksymalnie 3 bajtów dla każdego znaku. W związku z tym musiałby przeznaczyć 500*3=1500 bajtów, co jest znacznie większe niż 767 bajtów MySQL pozwala. Dlatego dostajesz ten błąd 1071.

Innymi słowy, musisz obliczyć liczbę znaków na podstawie reprezentacji bajtów zestawu znaków, ponieważ nie każdy charset jest reprezentacją pojedynczego bajtu (jak przypuszczałeś.) Tj. utf8 w MySQL jest używany co najwyżej 3-bajt na znak, 767/3≈255 znaków, a dla utf8mb4, co najwyżej 4-bajtowa reprezentacja, 767/4≈191 znaków.

Wiadomo też, że MySQL

column1 varchar(20) utf8_general_ci
column2  varchar(500) utf8_general_ci
 2
Author: Devy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 18:20:03

Naprawiłem ten problem za pomocą:

varchar(200) 

Zastąpione przez

varchar(191)

Wszystkie warszary, które mają więcej niż 200, zastępują je przez 191 lub ustawiają je jako tekst.

 2
Author: flik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 06:48:43

Znalazłem to zapytanie przydatne w wykrywaniu, które kolumny mają indeks naruszający maksymalną długość:

SELECT
  c.TABLE_NAME As TableName,
  c.COLUMN_NAME AS ColumnName,
  c.DATA_TYPE AS DataType,
  c.CHARACTER_MAXIMUM_LENGTH AS ColumnLength,
  s.INDEX_NAME AS IndexName
FROM information_schema.COLUMNS AS c
INNER JOIN information_schema.statistics AS s
  ON s.table_name = c.TABLE_NAME
 AND s.COLUMN_NAME = c.COLUMN_NAME 
WHERE c.TABLE_SCHEMA = DATABASE()
  AND c.CHARACTER_MAXIMUM_LENGTH > 191 
  AND c.DATA_TYPE IN ('char', 'varchar', 'text')
 1
Author: Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-16 10:21:38

Proszę sprawdzić czy sql_mode jest jak

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Jeśli tak, zmień na

sql_mode=NO_ENGINE_SUBSTITUTION

Lub

Uruchom ponownie serwer zmieniając swoje my.plik cnf (putting following)

innodb_large_prefix=on
 1
Author: neel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 17:06:35

Tylko zmiana utf8mb4 Na {[1] } Podczas tworzenia tabel rozwiązała mój problem. Na przykład: CREATE TABLE ... DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; do CREATE TABLE ... DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;.

 1
Author: MajidJafari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-21 15:31:14

Zmień CHARSET pola indeksu reklamacji na "latin1"
np. ALTER TABLE TBL CHANGE myfield myfield varchar (600) zestaw znaków latin1 DEFAULT null;
latin1 pobiera jeden bajt dla jednego znaku zamiast czterech

 0
Author: Stan Holodnak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 13:14:25

Jeśli tworzysz coś w stylu:

CREATE TABLE IF NOT EXISTS your_table (
  id int(7) UNSIGNED NOT NULL AUTO_INCREMENT,
  name varchar(256) COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY name (name)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ROW_FORMAT=FIXED;

Powinno być coś w rodzaju

CREATE TABLE IF NOT EXISTS your_table (
      id int(7) UNSIGNED NOT NULL AUTO_INCREMENT,
      name varchar(256) COLLATE utf8mb4_bin NOT NULL,
      PRIMARY KEY (id)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ROW_FORMAT=FIXED;

Ale musisz sprawdzić unikalność tej kolumny z kodu lub dodać nową kolumnę jako MD5 lub SHA1 kolumny varchar

 0
Author: 10undertiber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-20 12:06:58

Jeśli ostatnio zmieniłeś innodb_log_file_size, spróbuj przywrócić poprzednią wartość, która działała.

 0
Author: AnkitK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-05 11:30:57

W moim przypadku, miałem ten problem podczas tworzenia kopii zapasowej bazy danych przy użyciu znaków wyjścia/wejścia przekierowania Linuksa. Dlatego zmieniam składnię w sposób opisany poniżej. PS: używanie terminala linux lub mac.

Backup (bez > redirect)

# mysqldump -u root -p databasename -r bkp.sql

Restore (bez

# mysql -u root -p --default-character-set=utf8 databasename
mysql> SET names 'utf8'
mysql> SOURCE bkp.sql

Błąd "podany klucz był zbyt długi; maksymalna długość klucza to 767 bajtów" zniknął.

 0
Author: Cassio Seffrin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-15 03:18:43

Dla laravel 5.6

Kroki do wykonania

  1. przejdź do app \ Providers \ AppServiceProvider.php
  2. Add this to provider |/(Don ' t include pipeline) use Illuminate\Support\Facades \ Schema;
  3. wewnątrz funkcji rozruchowej Dodaj ten schemat / / (nie dołączaj potoku):: defaultStringLength (191);

To wszystko, smacznego.

 0
Author: Manojkiran.A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-26 13:03:07

Dla mnie problem "# 1071-określony klucz był zbyt długi; maksymalna długość klucza to 767 bajtów" został rozwiązany po zmianie kombinacji primarykey / uniquekey poprzez ograniczenie rozmiaru kolumny o 200.

ALTER TABLE `mytable` ADD UNIQUE (
`column1` (200) ,
`column2` (200)
);
 -1
Author: Abdul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-18 16:36:48

W przypadku, gdy uruchomisz Laravel (Laravel teraz domyślnie 4 bajtowy Unicode, co powoduje to) możesz rozwiązać ten problem zmieniając kolejne linie w config / database.php from

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

 do

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
 -2
Author: despotbg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-03 21:42:25