Ошибка установки Bugzilla с MySQL версии 8.0

Получается ошибка при создании базы данных с последней версией MySQL 8.0 для установки Bugzilla.

Я настраиваю новый сервер для Bugzilla с приведенной ниже конфигурацией.

Версия багзиллы: 5.0.6

Клубничная версия PERL: 5.28.2.1

Версия MySQL: 8.0

Моя текущая установка отлично работает со старой версией MySQL 5.7.27. Но каким-то образом нужно перейти на более новую версию MySQL 8.0, и с этим я получаю сообщение об ошибке при создании записи таблицы в базе данных.

В Google я нашел что-то, связанное с «ГРУППАМИ». Это ключевое слово зарезервировано в MySQL 8.0, и Bugzilla пытается использовать это ключевое слово. У меня нет знаний MySQL, поэтому я не мог понять эту проблему.

Ниже приведен вывод checksetup.pl.

.... ....

Проверка DBD-mysql (v4.001) в порядке: найдена v4.050

Проверка MySQL (v5.0.15) в порядке: найдена v8.0.17

Добавление новой таблицы bz_schema...

Инициализация bz_schema...

Создание таблиц...

Преобразование максимального размера attach_data в 100G...

Настройка вариантов для стандартных раскрывающихся полей:

приоритет разрешение op_sys bug_status rep_platform bug_severity

Создание каталога ./data...

Создание каталога ./data/assets...

Создание каталога ./data/attachments...

Создание каталога ./data/db...

Создание каталога ./data/extensions...

Создание каталога ./data/mining...

Создание каталога ./data/webdot...

Создание каталога ./graphs...

Создание каталога ./skins/custom...

Создание ./data/extensions/additional...

Создание ./data/mailer.testfile...

Создание ./Bugzilla/.htaccess...

Создание ./data/.htaccess...

Создание ./data/assets/.htaccess...

Создание ./data/attachments/.htaccess...

Создание ./data/webdot/.htaccess...

Создание ./graphs/.htaccess...

Создание ./lib/.htaccess...

Создание ./template/.htaccess...

Создание contrib/.htaccess...

Создание t/.htaccess...

Создание xt/.htaccess...

Предварительная компиляция шаблонов... готово.

    DBD::mysql::db selectrow_array failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups where name = ''' at line 1 [for Statement "SELECT id FROM groups where name = ''"] at Bugzilla/Install/DB.pm line 2497.

    Bugzilla::Install::DB::_fix_group_with_empty_name() called at Bugzilla/Install/DB.pm line 358

    Bugzilla::Install::DB::update_table_definitions(HASH(0x34e8cb8)) called at checksetup.pl line 175

person Chintan Parmar    schedule 23.09.2019    source источник


Ответы (3)


Группы по-прежнему можно использовать, однако вам необходимо добавлять имя базы данных перед каждым обращением к таблице "GROUPS". В случае стандартной установки Bugzilla имя базы данных — «ошибки». Пример из строки 1643 в DB.pm:

$dbh->do("ALTER TABLE groups DROP PRIMARY KEY");

Изменился на:

$dbh->do("ALTER TABLE bugs.groups DROP PRIMARY KEY");

Существует около дюжины операторов SQL, которые вызывают эту таблицу в DB.pm. Вам нужно будет добавить его ко всем из них.

person Jeff    schedule 24.01.2020
comment
Я думаю, что это сработает, но не проверено на моей стороне, так как я просто использовал более старую версию MySQL 5.27 для обходного пути. Но я обязательно воспользуюсь этой техникой, если захочу развернуть Bugzilla с MySQL 8.0. - person Chintan Parmar; 27.01.2020

Начиная с Mysql 8.0, группы являются зарезервированным словом. Следовательно, «группы» не могут быть именем таблицы. Вы можете исправить это, поставив обратные кавычки вокруг имени таблицы groups в коде bugzilla.

person Erki Hallingu    schedule 03.11.2019

Попробуй это:

SELECT id FROM database_name.groups where name = ''
person bruno    schedule 23.10.2019
comment
Было бы полезно, если бы вы объяснили, как этот код решает проблему. - person Robert Columbia; 23.10.2019
comment
Привет, Бруно, я мало что знаю о MySQL. Не подскажете, где мне это проверить? Я не понял вашего ответа, пожалуйста, объясните его кратко, это было бы очень полезно для меня. - person Chintan Parmar; 24.10.2019