【问题标题】:cannot open shared object file: No such file or directory - /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/mysql2.so (LoadError) when launching Rails无法打开共享对象文件:启动 Rails 时没有这样的文件或目录 - /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/mysql2.so (LoadError)
【发布时间】:2021-07-13 08:22:22
【问题描述】:

我正在尝试使用 mysql2 gem 构建和启动 Rails 6 容器。一切正常,但是当我启动 Rails 服务器时,出现错误

/usr/local/bundle/gems/activesupport-6.0.3.6/lib/active_support/dependencies.rb:324:in `require': libmariadb.so.3: cannot open shared object file: No such file or directory - /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/mysql2.so (LoadError)

我的 Dockerfile 的相关部分是我要安装本机扩展的地方。我知道 MariaDB 也是一种选择,但我也尝试了这些并得到了同样的错误。

apt-get update -qq && apt-get install -y git openssh-client build-essential pkg-config default-mysql-client default-libmysqlclient-dev libsqlite3-dev ;\

我正在使用 mysql2 (0.5.3) 和 Rails 6.0.3.6

有人有什么建议吗?我可能已经花了一个星期的时间,您的帮助将不胜感激。谢谢!

【问题讨论】:

  • 该错误消息暗示您已经在使用 MariaDB。您是否能够连接到 Rails 之外的数据库,例如使用 $ mysql --user=user_name --password=your_password db_name
  • 当我进入容器时输入which mysql 时什么也没有出现。我错过了什么吗?
  • 也看看这个。它说“没有这样的文件或目录”,但 mysql2.so 正是它预期的位置$ ls /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/ client.rb console.rb em.rb error.rb field.rb mysql2.so result.rb statement.rb version.rb 除非它指的是 libmariadb.so 不是它应该在的位置。

标签: mysql ruby-on-rails ruby docker mysql2


【解决方案1】:

我发现了问题。

在我的 Dockerfile 中,我有另一个 FROM 子句 after 我的 apt-get 安装。这样做会重置文件的范围,因此这些依赖项在 Rails 服务器运行时不可用。我删除了它,它起作用了。

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2016-09-19
    • 2013-07-11
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多