質問編集履歴
1
コードを修正しましたが、うまくいきませんでした。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
transaction
|
1
|
+
transactionでうまくrollbackされない。
|
test
CHANGED
@@ -50,122 +50,58 @@
|
|
50
50
|
|
51
51
|
..........
|
52
52
|
|
53
|
+
User.transaction do
|
54
|
+
|
55
|
+
begin
|
56
|
+
|
53
|
-
@users.each do |user|
|
57
|
+
@users.each do |user|
|
54
58
|
|
55
59
|
........
|
56
60
|
|
57
|
-
|
61
|
+
q = #INSERT文
|
58
62
|
|
59
|
-
ActiveRecord::Base.transaction do
|
60
63
|
|
61
|
-
q = #INSERT文です
|
62
64
|
|
63
|
-
|
65
|
+
libraries.each {|p| #各図書館へinsert
|
64
66
|
|
65
|
-
|
67
|
+
client = #dbへ接続
|
66
68
|
|
67
|
-
en
|
69
|
+
p.query("start transaction")
|
68
70
|
|
69
|
-
|
71
|
+
p.query(insert)
|
70
72
|
|
71
|
-
|
73
|
+
|
72
74
|
|
73
|
-
|
75
|
+
if user.save #webに登録できれば、localにcommit
|
74
76
|
|
75
|
-
|
77
|
+
p.query("commit")
|
76
78
|
|
77
|
-
rescue
|
78
|
-
|
79
|
-
flash[:notice] = "更新に失敗しました。"
|
80
|
-
|
81
|
-
redirect_to @back_url and return
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
rescue
|
88
|
-
|
89
|
-
flash[:notice] = "更新しました"
|
90
|
-
|
91
|
-
redirect_to @back_url and return
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
flash[:notice] = "更新しました"
|
98
|
-
|
99
|
-
redirect_to @back_url and return
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
```
|
104
|
-
|
105
|
-
**application_controller.rb**
|
106
|
-
|
107
|
-
```applicationcontroller
|
108
|
-
|
109
|
-
def library_db_by(q)
|
110
|
-
|
111
|
-
result_flg = false
|
112
|
-
|
113
|
-
@librarys = Library.all
|
114
|
-
|
115
|
-
after_array
|
79
|
+
after_array << client
|
116
|
-
|
117
|
-
ActiveRecord::Base.transaction do
|
118
|
-
|
119
|
-
begin
|
120
|
-
|
121
|
-
@librarys.each do |library|
|
122
|
-
|
123
|
-
host_ = library.IP_ADDRESS
|
124
|
-
|
125
|
-
port_ = library.MYSQL_PORT
|
126
|
-
|
127
|
-
client = #host_,port_からdbを代入
|
128
|
-
|
129
|
-
client.query('BEGIN')
|
130
|
-
|
131
|
-
q.each do |i, que|
|
132
|
-
|
133
|
-
client.query('COMMIT')
|
134
80
|
|
135
81
|
end
|
136
82
|
|
137
|
-
|
83
|
+
}
|
138
84
|
|
139
|
-
|
85
|
+
end # users end
|
140
86
|
|
141
|
-
|
87
|
+
rescue => e
|
142
88
|
|
143
|
-
re
|
89
|
+
logger.error e
|
144
90
|
|
145
|
-
result_flg = false
|
146
91
|
|
147
|
-
if client.present?
|
148
92
|
|
149
|
-
|
93
|
+
after_array.each {|p| # error出たら、rolllback
|
150
94
|
|
151
|
-
e
|
95
|
+
p.query("rollback")
|
152
96
|
|
153
|
-
|
97
|
+
}
|
154
98
|
|
155
|
-
after_array.each {|p|
|
156
99
|
|
157
|
-
after_array.query('ROLLBACK')
|
158
100
|
|
159
|
-
|
101
|
+
end
|
160
102
|
|
161
|
-
|
103
|
+
```````
|
162
104
|
|
163
|
-
|
105
|
+
end #transaction end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
|
-
end
|
168
|
-
|
169
|
-
end
|
170
106
|
|
171
107
|
```
|