質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

2288閲覧

Rails ActiveRecordのトランザクション処理で初回のみ接続エラーがでる

ST2020

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/05/31 06:39

Ruby2.4
Rails5.1.1
Mysql5.6

activerecord-shard_forというgemでシャーディングを行なっているのですが
分割したDBのトランザクションでRailsアプリケーション起動初回のみ接続エラーが
でて2回目以降からは成功するようになります。またブレークポイントを張ってデバッグ
しようとすると初回でも接続エラーになりません。

以下、エラー内容とトレースになります。
何かわかりましたら教えていただけると助かります。
何卒よろしくお願いいたします。

<ActiveRecord::StatementInvalid: Mysql2::Error: MySQL client is not connected: ROLLBACK>

[{"id"=>0, "trace"=>"mysql2 (0.4.6) lib/mysql2/client.rb:120:in _query'"}, {"id"=>1, "trace"=>"mysql2 (0.4.6) lib/mysql2/client.rb:120:in block in query'"},
{"id"=>2,
"trace"=>
"mysql2 (0.4.6) lib/mysql2/client.rb:119:in handle_interrupt'"}, {"id"=>3, "trace"=>"mysql2 (0.4.6) lib/mysql2/client.rb:119:in query'"},
{"id"=>4,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:214:in block (2 levels) in execute'"}, {"id"=>5, "trace"=> "activesupport (5.1.1) lib/active_support/dependencies/interlock.rb:46:in block in permit_concurrent_loads'"},
{"id"=>6,
"trace"=>
"activesupport (5.1.1) lib/active_support/concurrency/share_lock.rb:185:in yield_shares'"}, {"id"=>7, "trace"=> "activesupport (5.1.1) lib/active_support/dependencies/interlock.rb:45:in permit_concurrent_loads'"},
{"id"=>8,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:213:in block in execute'"}, {"id"=>9, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract_adapter.rb:612:in block (2 levels) in log'"},
{"id"=>10,
"trace"=>
"/Users/tatsukawa/.rbenv/versions/2.4.1/lib/ruby/2.4.0/monitor.rb:214:in mon_synchronize'"}, {"id"=>11, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract_adapter.rb:611:in block in log'"},
{"id"=>12,
"trace"=>
"activesupport (5.1.1) lib/active_support/notifications/instrumenter.rb:21:in instrument'"}, {"id"=>13, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract_adapter.rb:603:in log'"},
{"id"=>14,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:212:in execute'"}, {"id"=>15, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/mysql/database_statements.rb:31:in execute'"},
{"id"=>16,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:240:in exec_rollback_db_transaction'"}, {"id"=>17, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract/database_statements.rb:278:in rollback_db_transaction'"},
{"id"=>18,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/query_cache.rb:17:in rollback_db_transaction'"}, {"id"=>19, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:135:in rollback'"},
{"id"=>20,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:185:in block in rollback_transaction'"}, {"id"=>21, "trace"=> "/Users/tatsukawa/.rbenv/versions/2.4.1/lib/ruby/2.4.0/monitor.rb:214:in mon_synchronize'"},
{"id"=>22,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:183:in rollback_transaction'"}, {"id"=>23, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:209:in rescue in block in within_new_transaction'"},
{"id"=>24,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:206:in block in within_new_transaction'"}, {"id"=>25, "trace"=> "/Users/tatsukawa/.rbenv/versions/2.4.1/lib/ruby/2.4.0/monitor.rb:214:in mon_synchronize'"},
{"id"=>26,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:191:in within_new_transaction'"}, {"id"=>27, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract/database_statements.rb:225:in transaction'"},
{"id"=>28,
"trace"=>
"activerecord (5.1.1) lib/active_record/transactions.rb:210:in transaction'"}, {"id"=>29, "trace"=>"app/services/user_service.rb:43:in block in create!'"},
{"id"=>30,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/database_statements.rb:225:in block in transaction'"}, {"id"=>31, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:194:in block in within_new_transaction'"},
{"id"=>32,
"trace"=>
"/Users/tatsukawa/.rbenv/versions/2.4.1/lib/ruby/2.4.0/monitor.rb:214:in mon_synchronize'"}, {"id"=>33, "trace"=> "activerecord (5.1.1) lib/active_record/connection_adapters/abstract/transaction.rb:191:in within_new_transaction'"},
{"id"=>34,
"trace"=>
"activerecord (5.1.1) lib/active_record/connection_adapters/abstract/database_statements.rb:225:in `transaction'"},

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問