Произошла ошибка при установке mysql2 (0.3.21), и Bundler не может продолжить - PullRequest
0 голосов
/ 28 июня 2018

Любая причина, по которой эта ошибка появилась, когда я пытался связать приложение: Я попытался установить gem install mysql2 -v '0.3.21', как они рекомендуют, но он не может быть установлен правильно. Также я запускаю это на macOS High Sierra. Извините за неправильную формулировку этого вопроса, потому что я впервые работаю с ruby.

 To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/yamanshrestha/Desktop/Dorsata/vendor/bundle/ruby/2.3.0/extensions/universal-darwin-17/2.3.0/mysql2-0.3.21/mkmf.log

current directory: /Users/yamanshrestha/Desktop/Dorsata/vendor/bundle/ruby/2.3.0/gems/mysql2-0.3.21/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/yamanshrestha/Desktop/Dorsata/vendor/bundle/ruby/2.3.0/gems/mysql2-0.3.21/ext/mysql2
make "DESTDIR="
compiling infile.c
compiling client.c
client.c:439:3: error: use of undeclared identifier 'my_bool'
  my_bool res = mysql_read_query_result(client);
  ^
client.c:441:19: error: use of undeclared identifier 'res'
  return (void *)(res == 0 ? Qtrue : Qfalse);
                  ^
client.c:762:3: error: use of undeclared identifier 'my_bool'
  my_bool boolval;
  ^
client.c:793:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:794:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:797:10: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
    case MYSQL_SECURE_AUTH:
         ^~~~~~~~~~~~~~~~~
         MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.11/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
  MYSQL_DEFAULT_AUTH,
  ^
client.c:798:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:799:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:830:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                     ^
client.c:1185:38: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
  return _mysql_client_options(self, MYSQL_SECURE_AUTH, value);
                                     ^~~~~~~~~~~~~~~~~
                                     MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.11/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
  MYSQL_DEFAULT_AUTH,
  ^
10 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/yamanshrestha/Desktop/Dorsata/vendor/bundle/ruby/2.3.0/gems/mysql2-0.3.21 for inspection.
Results logged to /Users/yamanshrestha/Desktop/Dorsata/vendor/bundle/ruby/2.3.0/extensions/universal-darwin-17/2.3.0/mysql2-0.3.21/gem_make.out

An error occurred while installing mysql2 (0.3.21), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.21' --source 'http://rubygems.org/'` succeeds before bundling.

Ответы [ 4 ]

0 голосов
/ 27 мая 2019

Для меня решение было установить mysql-connector-c, brew install mysql-connector-c. В моем конкретном случае он уже был установлен, но мне пришлось повторно связать его с принудительной перезаписью (сообщения в консоли точно скажут вам, что делать в вашей ситуации).

0 голосов
/ 15 апреля 2019

У меня была такая же проблема. Как вы можете видеть из ошибки, существует проблема интерпретации кода. Это вызвано несоответствием версий mysql2, написанных в gemfile и используемых в коде. Чтобы решить , я запускаю:
- gem install mysql2 (будет установлена ​​последняя версия msql2)
- в моем gemfile я изменил: gem 'mysql2', '~> 0.3.1' на gem 'mysql2'

0 голосов
/ 06 мая 2019

Исправлено понижение рейтинга MySQL. И скомпилируйте mysql2, используя mysql v5.7.

Для пользователей Mac:

brew install mysql@5.7

gem install mysql2 -v '0.3.21' -- --with-mysql-include=/usr/local/Cellar/mysql@5.7/5.7.25/include/mysql --with-mysql-lib=/usr/local/Cellar/mysql@5.7/5.7.25/lib

Ссылка: https://github.com/brianmario/mysql2#configuration-options

0 голосов
/ 29 июня 2018

Итак, мне удалось решить проблему самостоятельно, немного осмотревшись. По сути, версия mysql2, записанная в gemfile, устарела по сравнению с написанным кодом, поэтому разница в синтаксисе между версиями была причиной этой ошибки при попытке установить mysql2. Поэтому, чтобы решить эту проблему, вы должны перейти в свой gemfile и затем изменить номер версии mysql2. Я поменял мины на следующие:

 gem 'mysql2', '~> 0.4.10'

сохраните файл и попробуйте установить снова, и он должен появиться

...