Настроить соединение с базой данных для приложения Ruby [duplicate]

После компиляции исходного кода (анонимный) класс, созданный линией:

new GenericEntity>(list) {}

использует переменную типа для ссылки на ее родительскую. Поскольку переменные типа не имеют значения во время выполнения, вы не можете использовать генерики, подобные этому. Вы вынуждены передавать так называемый токен типа из вызывающего сайта. Это пример, который требует, чтобы токен передавался от вызывающего абонента findAll(), но вы могли потребовать его в конструкторе и сохранить его в переменной экземпляра:

public abstract class GenericDataResource {
  public Response findAll(GenericEntity> token) {
    Query query = em.createNamedQuery(modelClass.getSimpleName() + ".findAll");
    List list = query.getResultList();
    return Response.ok(token).build();
  }
}

отправьте токен, как

new GenericEntity>() {}

Если вы используете только непараметрированные подклассы, findAll() может воспользоваться отражением для создания токена (непроверенный, надеюсь, что вы получите эту идею):

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response findAll() {
  Query query = em.createNamedQuery(modelClass.getSimpleName()+".findAll");
  List list = query.getResultList();
  return Response.ok(new GenericEntity(list, getType())).build();
}

Вы должны реализовать getType(), чтобы вернуть желаемый тип. Это будет подкласс ParameterizedType , способный обозначать тип List>

109
задан The Unfun Cat 10 February 2013 в 11:43
поделиться

22 ответа

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Работал для меня. Все аналогичные не сделали.

295
ответ дан the Tin Man 18 August 2018 в 14:09
поделиться
  • 1
    Симлинк работал для меня (после перехода на Mountain Lion). Благодаря! – siannopollo 24 October 2012 в 02:30
  • 2
    Symlink делает это, особенно для таких случаев, как запуск рельсов из-под RubyMine, где .bash_profile действительно не применяется. – maksimov 12 January 2013 в 02:58
  • 3
    +1 на символической ссылке. Горный лев, Rails 3 на AppFog – Andrew 19 January 2013 в 04:52
  • 4
    Я добавил ваш DYLD_LIBRARY_PATH в .bash_profile, но мне также пришлось удалить «mysql2» gem, а затем повторно установить его. например: «gem uninstall mysql2 & amp; & amp; & amp; & amp; gem install mysql2 ' – brendan 17 April 2013 в 18:17
  • 5
    Это решение для RubyMine. – Justin 19 November 2013 в 22:50
  • 6
    Это работало на Mac OS X - Yosemite для меня с MySQL, установленным из файла dmg. Спасибо, Джозеф. – racl101 2 September 2015 в 23:17
  • 7
    Для тех, кто пришел сюда 10.11, вы больше не можете ссылаться на usr/lib, но символическая ссылка на usr/local/lib будет работать: sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib – JonathanSimmons 14 September 2015 в 16:44
  • 8
    Операция не разрешена (очевидно, с sudo) моя версия SO - El capitan – ignacio chiazzo 31 December 2015 в 06:07
296
ответ дан the Tin Man 7 September 2018 в 00:33
поделиться
296
ответ дан the Tin Man 30 October 2018 в 04:53
поделиться

На Mac Sierra, если вы используете Homebrew, выполните:

sudo ln -s /usr/local/Cellar/mysql@5.6/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
1
ответ дан Abhishek 18 August 2018 в 14:09
поделиться

Для MySql 5.6, установленного из DMG на Mavericks

sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
6
ответ дан Abhishek Pande 18 August 2018 в 14:09
поделиться

используйте это из командной строки:

sudo install_name_tool -id /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib

попробовал несколько компьютеров, где maverick всегда работает

0
ответ дан ADAM 18 August 2018 в 14:09
поделиться

Единственное, что сработало для меня, это:

sudo install_name_tool -change libmysqlclient.18.dylib \
/usr/local/mysql-5.6.23-osx10.8-x86_64/lib/libmysqlclient.18.dylib \
/Library/Ruby/Gems/2.0.0/gems/mysql2-0.4.3/lib/mysql2/mysql2.bundle

Заменить пути mysql и драгоценных камней в соответствии с вашей системой.

0
ответ дан Aleksandar Pavić 18 August 2018 в 14:09
поделиться

Я работал с командой rails g model, и я получил эту ошибку:

Library not loaded: libmysqlclient.18.dylib

Я пробовал это, и он функционировал для меня. Я использовал Mavericks 10.9.5

sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Спасибо!

Теперь я использую Yosemite 10.10.5, и у меня такая же ошибка, поэтому я просто запустил эту команду на терминал и он был успешно исправлен.

$ sudo ln -s /usr/local/mysql-5.6.26-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

также вы можете попробовать:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Оба они отлично работают для меня. Надеюсь, это может быть полезно!

0
ответ дан Alex Ventura 18 August 2018 в 14:09
поделиться

Если вы используете MySQL, установленный с HomeBrew в El Capitan, вы должны связать его следующим образом:

sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
8
ответ дан arjunswaj 18 August 2018 в 14:09
поделиться
gem uninstall -aIx

и

bundle install

работали для меня.

1
ответ дан atomiccoder 18 August 2018 в 14:09
поделиться

У меня возникла проблема «Библиотека не загружена: libmysqlclient.18.dylib» при импорте MySQLdb из MySQL Для python3 :

    Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import MySQLdb
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so
  Reason: image not found

Решение работает для меня: Mac OS X 10.11.1 Python3.5

Edit ~/.bash_profile:
export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin:$PATH"
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
export PATH="/usr/local/mysql/bin:$PATH"
export PATH="/usr/local/mysql/lib:$PATH"
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
0
ответ дан Binh Dang 18 August 2018 в 14:09
поделиться
  • 1
    @MSU_Bulldog Конечно, он отвечает на вопрос. Он даже предоставляет новую информацию. Просто потому, что ответ включает ошибку, которая привела их сюда, не означает, что решение, которое они также предоставляют, не имеет ценности. – Artjom B. 1 December 2015 в 19:12

Хотя название этого вопроса описывает именно ту проблему, с которой я столкнулся, обстоятельства отличаются от описанных в предыдущих ответах, а также было решением.

В моем случае (El Capitan, mysql установлен через homebrew), brew update && brew upgrade вызвало обновление пакета mysql до 5.7.10 (из 5.6.x).

Обновление вызвало libmysqlclient.18.dylib для замены на libmysqlclient.20.dylib, но mysql2 gem все еще полагался на первый.

Чтобы устранить проблему, я сделал: gem uninstall mysql2 && gem install mysql2

Обратите внимание, что подобные проблемы могут возникать в разных библиотеках, управляемых доморощенным ( см. мой собственный ответ на это, например )

36
ответ дан Community 18 August 2018 в 14:09
поделиться
  • 1
    Большой ! Я обновил mysql до 5.7 ... столкнулся с этой проблемой ..... сделал следующие шаги: 1. gem удалить mysql2 & gt; выбранная опция 3 2. gem install mysql2 3. добавила это в gemfile проекта --- & gt; gem 'mysql2', '~ & gt; 0.3.21 '4. Установить комплект – Udit Kapahi 23 June 2016 в 09:53
  • 2
    Я рекомендую всем попробовать это в первую очередь! Если это сработает, вы можете избежать разваливания вашей системы любыми другими обходными решениями. Иногда вам приходится полагаться на магические символические ссылки и т. Д., Но это делает вашу систему все более и более хрупкой. (Если это не сработает, никакого вреда и ничего не нужно отменить). – Tom Wilson 20 December 2016 в 19:51
  • 3
    Работал и для меня. Проблема в том, что я перешел от установки mysql w / homebrew к официальному установщику. – xenetics 22 March 2018 в 03:14
  • 4
    Это сработало отлично. – Matthew Townsen 8 May 2018 в 01:24
  • 5
    – Peter Dolan 13 September 2018 в 21:03

Чтобы убедиться, какая символическая ссылка необходима (зависит от версии mysql и версии os):

$ locate libmysqlclient.18.dylib
/usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib

и так:

ln -s /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
2
ответ дан Fraide 18 August 2018 в 14:09
поделиться

Я использую Rails REE (2.3.4) для унаследованной системы. После обновления до El Capitan запуск скрипта / консоли приводил к ошибке, и мое приложение больше не запускалось (используя pow):

$ script/console
Loading development environment (Rails 2.3.4)
/blah-blah/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection:RuntimeError: Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (dlopen(/blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle
  Reason: image not found - /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle)

Из этой самой темы, выше, я решил, что мне нужно было это сделать команда в терминале: sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib Эта команда вызвала ошибку: «ln: /usr/lib/libmysqlclient.18.dylib: операция не разрешена». Я никогда не видел эту ошибку раньше.

После довольно много рытья я нашел эту статью: http://www.macworld.com/article/2986118/security/how-to- modify-system-integrity-protection-in-el-capitan.html и следуйте инструкциям, чтобы отключить SIP (новую защиту целостности El Capitan). После отключения SIP и после перезагрузки команда ln работала нормально. Затем я отключил SIP. Теперь все в порядке. Мое приложение снова запускается с использованием pow и без ошибок запускает скрипт / консоль. Надеюсь, это поможет вам.

1
ответ дан GeezerGeek 18 August 2018 в 14:09
поделиться

Если вы используете Bitnami RubyStack и столкнулись с подобной проблемой. Попробуйте этот

sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
0
ответ дан julienc 18 August 2018 в 14:09
поделиться

Я подтверждаю патч от Abhishek работает .

тоже работает для Yosemite.

note: вместо ссылки на конкретную версию mysql , используйте тот факт, что mysql уже создал символическую ссылку:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

это решение действительно работает для Xcode и C API.

4
ответ дан Kyle Decot 18 August 2018 в 14:09
поделиться

Моя проблема с загрузкой этого файла пакета была плохой символической ссылкой. Поэтому проверьте ссылку и при необходимости замените ее на новую. В этот момент все встало на свои места. Не знаю, как это произошло, но так оно и было. Первый раз, когда произошла синтаксическая ошибка.

0
ответ дан Rich_F 18 August 2018 в 14:09
поделиться

Я столкнулся с этой проблемой после полного удаления и последующей установки MySQL. В частности:

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib

Я даже не коснулся моего приложения Rails.

Переустановка mysql2 gem решила эту проблему.

$ gem uninstall mysql2
$ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock)

[MySQL 5.7.10, Rails 4.0.0, Ruby 2.0.0, Mac OS X Yosemite 10.10]

8
ответ дан sealocal 18 August 2018 в 14:09
поделиться

Это работает для меня:

ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
2
ответ дан Son 18 August 2018 в 14:09
поделиться
  • 1
    Закончилось изменение для меня ... ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib – treejanitor 25 September 2016 в 19:13

Для тех, кто использует варево. Просто свяжите версию mysql с опцией «--force».

brew link mysql56 --force
1
ответ дан tagaism 18 August 2018 в 14:09
поделиться
  • 1
    Это способ связать файл библиотеки ... а не использовать параметр ln -s. Используйте ссылку brew mysql@5.7 --force для обновленной версии – Vahid Kowsari 22 June 2018 в 23:38

В El Capitan я получил ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

В El Capitan /usr/lib/ теперь есть ограниченный флаг и не может быть записано без отключения безопасности, поэтому я просто поставлю ссылку в /usr/local/lib вместо .

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Сервер Rails снова работает отлично.

119
ответ дан TinMonkey 18 August 2018 в 14:09
поделиться
  • 1
    Не нужен был весь ответ Алекса. Одна символическая ссылка сделала трюк. – gitb 28 October 2015 в 14:37
  • 2
    Я сделал это и получил: & quot; connect ': не удается подключиться к локальному серверу MySQL через сокет' /tmp/mysql.sock '(2) (Mysql2 :: Error) & quot; – Josh Hunter 28 October 2015 в 16:53
  • 3
    @JoshHunter Я считаю, что это отдельный вопрос. Здесь есть поток stackoverflow.com/questions/18449050/… также может быть так, что сервер MySQL не запущен. – TinMonkey 28 October 2015 в 17:13
  • 4
    да, сервер не работал ... это исправило это. sudo /usr/local/mysql/support-files/mysql.server start – Josh Hunter 28 October 2015 в 23:14
  • 5
    спас мой день .. Спасибо человеку .. – Ruturaj Bisure 13 July 2018 в 07:03

После множества поисковых запросов и попыток все выше ... Единственное, что решило мою проблему, это команда:

$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Я использую macbook pro, OSX 10 El Capitan. Дарвин xxxx-MacBook-Pro.local 15.6.0 Ядро Дарвина Версии 15.6.0: Чт 23 июня 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 Perl: v5.18.2 Mysql: 5.6.19

0
ответ дан Tunaki 18 August 2018 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: