Я пытался соединиться с базой данных MySql с помощью Wt :: Dbo :: backend :: MySQL последней версии Wt-3.3.5, но постоянно получаю сообщение об ошибке:
«Ошибка выполнения MySQL:« SET storage_engine = INNODB; »: неизвестная системная переменная« storage_engine »»
MySql работает на Windows 7 с последней версией MySql Server 5.7.10.
Я пытался выполнить:
SET storage_engine = INNODB;
в командной строке MySql и, конечно же, получить ту же неизвестную системную переменную «storage_engine» ». Команда, которая работает:
SET default_storage_engine = INNODB;
Означает ли это, что Wt :: Dbo :: backend :: MySQL не поддерживает эту версию MySql? Я не мог найти ничего ни по их документации, ни по интернету.
Спасибо,
В следующих ссылках я обнаружил, что действительно переменная «storage_engine» была переименована в «default_storage_engine», из-за чего у некоторых программ начались проблемы с последними версиями MySql.
Возможные решения:
1) Измените источник Wt :: Dbo, изменив файл «mysql.c«вокруг линии 980 в функции:
void MySQL::init()
{
executeSql("SET sql_mode='ANSI_QUOTES,REAL_AS_FLOAT'");
executeSql("SET storage_engine=INNODB;");
executeSql("SET NAMES 'utf8';");
}
Сначала каким-то образом проверяя, какая версия MySql есть на сервере, а затем установите переменную «default_storage_engine» вместо «storage_engine». А затем перекомпилируйте полную библиотеку Wt :: Dbo.
ИЛИ ЖЕ
2) Вернитесь к самой последней версии MySql, в которой переменная «storage_engine» еще не была переименована.
Я выбрал решение 2 и удалил MySql 5.7 и установил MySql 5.4, и теперь все работает просто отлично.
Надеюсь, это поможет кому-то там … ура!
Других решений пока нет …