该命令rails server抛出此错误.
C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11-x86-mingw32/lib/mysql2/mysql2.rb:2:in `require': cannot load
such file -- mysql2/2.0/mysql2 (LoadError)
Run Code Online (Sandbox Code Playgroud)
我使用的红宝石2.0.0从RubyInstaller在Windows XP的方块.
我弄清楚问题是什么,但我不知道如何解决它.问题是gem中没有任何2.0/目录mysql2-0.3.11-x86-mingw32.这是rails从Gemfile安装为其依赖项的gem:
GEM
remote: https://rubygems.org/
specs:
... many gems here
mysql2 (0.3.11-x86-mingw32)
... many gems here
DEPENDENCIES
...
mysql2
...
Run Code Online (Sandbox Code Playgroud)
这是该mysql2.rb文件中的内容:
# C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\mysql2.rb
RUBY_VERSION =~ /(\d+.\d+)/
require "mysql2/#{$1}/mysql2" # <<-- this is that #2 line that throws an error
Run Code Online (Sandbox Code Playgroud)
很明显,它采用当前的Ruby版本号并将其用作路径段来访问某个mysql2文件.实际上它是mysql2.so文件.当我使用Ruby 2.0.0时,路径段是2.0:
mysql2/2.0/mysql2 …Run Code Online (Sandbox Code Playgroud) 在更新之前一切正常.使用带有RVM的ruby 1.9.3p392和rails(3.2.12)使用MySQL 5.7.16和Nginx和Unicorn
日志显示
LoadError: libmysqlclient.so.18: cannot open shared object file: No such file or directory - /home/bill/apps/xxx/shared/bundle/ruby/1.9.1/gems/mysql2-0.3.16/lib/mysql2/mysql2.so
Run Code Online (Sandbox Code Playgroud)
我试过了:
bundle install没有任何效果.更新后有人遇到过这个问题吗?
我试图让我的webrick服务在80端口.我试过:
rails server -p 80
Run Code Online (Sandbox Code Playgroud)
但获得拒绝访问权限.我后来才知道使用端口1-1024需要root权限,所以我尝试了这个
sudo rails server -p 80
Run Code Online (Sandbox Code Playgroud)
但是,这次我得到一个mysql2错误.不知道这里发生了什么.我试着跑:
rails server -p 1025
Run Code Online (Sandbox Code Playgroud)
并且它工作正常,我认为它是关于root和mysql2的东西.有人可以帮忙吗?
以下是控制台中的错误消息:
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle:dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2. bundle,9):库未加载:libmysqlclient.18.dylib(LoadError)引用自:/Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle原因:未找到图像 - 来自/Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/lib/mysql2.rb:8的/Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle /Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/bundler/runtime.rb:68:in
require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/bundler/runtime.rb:68:inrequire'from /Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/ bundler/runtime.rb:66:在each' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/bundler/runtime.rb:66:inrequire'from /Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/bundler/runtime.rb:55:in require'fromeach' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/bundler/runtime.rb:55:in/ Library/Ruby/Gems/1.8/gems/bundler-1.0.12/lib/bundler.rb:120:in require'fromrequire' from /Users/ccool2486/Sites/fs2_test/config/application.rb:7 from /Library/Ruby/Gems/1.8/gems/railties-3.0.6/lib/rails/commands.rb:28:in/Library/Ruby/Gems/1.8/gems/railties-3.0.6/lib/rails/commands.rb:28 from/Library/Ruby/Gems/1.8/gems/railties-3.0.6/lib/rails/commands.rb:27:in require'fromtap' from /Library/Ruby/Gems/1.8/gems/railties-3.0.6/lib/rails/commands.rb:27 from script/rails:6:inscript/rails:6
I am trying to get a rails project up and running on my local machine. When I do bundle install
Fetching mysql2 0.3.20
Installing mysql2 0.3.20 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/mac/.rvm/gems/ruby-2.3.1/gems/mysql2-
0.3.20/ext/mysql2
/Users/mac/.rvm/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20180707-33936-1toblx7.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... …Run Code Online (Sandbox Code Playgroud) 运行rake db:migrate后出现以下错误
rake aborted!
LoadError: dlopen(/Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle, 9): Library not loaded: libssl.1.0.0.dylib
Referenced from: /Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle
Reason: image not found - /Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle
/Users/scott/Google Drive/playground/myApp/myApp/config/application.rb:21:in `<top (required)>'
/Users/scott/Google Drive/playground/myApp/myApp/Rakefile:4:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
libssl是指什么?
我正在尝试将 async wait 与 mysql2 和池一起使用,但我认为我做错了。下面是我的代码(正如我所说,我不确定我是否在这里做事)。
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'test',
password: '',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
const promisePool = pool.promise(); // Get a Promise wrapped instance of that pool
app.post('/api/register', (req, res) => {
async function queryDB() {
try {
const addUser = await promisePool.execute(
"INSERT INTO users (company, email, password) VALUES (?,?,?)",
['Ikea', 'Ikea@ikea.com', '123'],
)
const addAnother = await promisePool.execute(
"INSERT INTO users (company, email, password) VALUES (?,?,?)",
['Google', …Run Code Online (Sandbox Code Playgroud) Ruby新手在这里试图弄清楚如何使用宝石,到目前为止,体验并不是那么好.
通过gem安装mysql2之后我尝试在一个简单的文件中使用它.
require 'mysql2' #client = Mysql2::Client.new(:host => "localhost", :username => "username")
虽然当我运行这个时,我得到:
Parse.rb:1:in `require': no such file to load -- mysql2 (LoadError) from Parse.rb:1
然而我的宝石列表包含mysql2:
Tanner-Smiths-MacBook-Pro:Humans_vs_Zombies_Parse tanner$ gem list *** LOCAL GEMS *** abstract (1.0.0) actionmailer (3.0.1, 2.3.5, 1.3.6) actionpack (3.0.1, 2.3.5, 1.13.6) actionwebservice (1.2.6) activemodel (3.0.1) activerecord (3.0.1, 2.3.5, 1.15.6) activeresource (3.0.1, 2.3.5) activesupport (3.0.1, 2.3.5, 1.4.4) acts_as_ferret (0.4.3) arel (2.0.2) builder (2.1.2) capistrano (2.5.19, 2.5.2) cgi_multipart_eof_fix (2.5.0) daemons (1.1.0, 1.0.10) dnssd (1.4, 0.6.0) erubis (2.6.6) fastthread (1.0.7, …
使用rails应用程序,有一些奇怪的数据库/ rake问题.
当我执行:
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Mysql2::Error: No database selected: SHOW TABLES
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
跟踪并未显示有用的信息.可以在这里看到:http://pastebin.com/WdsguudC
配置文件看起来正确,用户正在登录,或者我会遇到某种访问错误.数据库存在,用户具有正确的权限,我可以手动访问和操作它.我做了一堆谷歌搜索,并没有发现任何有用的东西.不确定是否还有其他需要提供的代码,因为这似乎是一个相当低级别的问题.
我正在使用Mac High Sierra.我正在使用带有RVM的Ruby 2.2.1.我需要在这个Ruby on Rails应用程序中使用mysql2.我确实安装了mysql 5.7.我确实安装了xcode和命令行工具.
我只是想让这个公司应用程序在我的本地机器上工作.我知道我非常接近但是当我进行捆绑安装时我有一个最后的错误当我到达mysql2 gem时收到以下错误:
Fetching mysql2 0.3.18
Installing mysql2 0.3.18 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/ahayden/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.18/ext/mysql2
/Users/ahayden/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20180710-52515-2hjll8.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't know …Run Code Online (Sandbox Code Playgroud) 我想在Ruby脚本中使用mysql2 gem连接到mysql数据库,但是没有Rails或ActiveRecord,但是读取config/database.yml文件是为了不直接在Ruby脚本中公开用户名和密码.如果我像这样使用ActiveRecord,我可以连接:
dbconfig = YAML::load(File.open('config/database.yml'))
ActiveRecord::Base.establish_connection( dbconfig['production'] )
Run Code Online (Sandbox Code Playgroud)
但是,如果我为Mysql2连接尝试相同的技巧,我会收到一个错误:
client = Mysql2::Client.new(dbconfig['production'])
Run Code Online (Sandbox Code Playgroud)
显然语法不同,我需要这样的东西:
client = Mysql2::Client.new(:host => "localhost", :username => "user", :password => 'password', :database => 'db', :socket => '/tmp/mysql.sock')
Run Code Online (Sandbox Code Playgroud)
但是不想直接在脚本中公开用户名和密码.
那我怎么能从config/database.yml中获取所有数据并将其传递给Mysql2::Client.new()方法呢?
谢谢.
编辑
只是想澄清一下,为了最终使它工作我通过这样做修改了一下有关的答案:
client = Mysql2::Client.new(:host => dbconfig['hostname'], :username => dbconfig['username'], :password => dbconfig['password'], :database => dbconfig['database'], :socket => '/tmp/mysql.sock')
Run Code Online (Sandbox Code Playgroud)
简单地做Mysql2::Client.new(config)就行不通,因为它不会拿起用户名和密码.