На самом деле я виноват, что раньше я об этом не думал, что моя версия MySQL удаленного сервера (на виртуальном хостинге) - 5.5.6
, но моя локальная версия MySQL - 5.7.19
.
Я разработал Laravel (v6.6.0
) веб-приложение, в котором я запустил миграцию при первом запуске, но, поскольку это полностью личный проект, я продолжал вносить изменения в базу данных вручную, где и когда это необходимо, (но выключено Кроме того, я продолжал изменять файлы миграции, хотя никогда не запускал их после первого экземпляра.
Я перенес все данные из некоторых других таблиц, и мое приложение было готово к развертыванию. Но когда я экспортировал таблицы локальной базы данных и импортировал их в удаленную базу данных, это давало мне известную ошибку:
Указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт
Я фактически проигнорировал это, потому что все таблицы были импортированы красиво. Но недавно я нашел его предостережения - все AUTO_INCREAMENT
и PRIMARY_KEY
отсутствуют в моей удаленной базе данных.
Я искал то, что мог, но все решения предлагают удалить базы данных и создать его снова с UTF-8 на самом деле не может быть моим случаем. И решение, подобное следующему PHP -way, также не в моем случае, так как я использую PHPMyAdmin для импорта своей таблицы, когда я получаю сообщение об ошибке:
// File: app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
Я также попытался выполнить следующую команду в моей целевой базе данных:
SET @global.innodb_large_prefix = 1;
Но не повезло. Я также попытался заменить все вхождения моего .sql
локального файла:
- с
utf8mb4
на utf8
и - с
utf8mb4_unicode_ci
на utf8_general_ci
, но снова не повезло.
Откуда конкретно происходит ошибка, на самом деле более длинные внешние ключи , как xy_section_books_price_unit_id_foreign
, и на этом этапе, когда все сделано, я не знаю, как я могу реорганизовать все внешние ключи в 5.5
совместимые.
Может кто-нибудь, пожалуйста, пролить свет на мою проблему?
Как я могу развернуть мой локальная база данных (v5.7
) без потери моих PRIMARY_KEY
s, FOREIGN KEYS и INDEX
es для базы данных v5.5
MySQL, сохраняя данные в целости?