質問編集履歴
2
理由不明だが解決した方法(2022/03/14 23:09)
test
CHANGED
File without changes
|
test
CHANGED
@@ -169,4 +169,54 @@
|
|
169
169
|
|
170
170
|
長い質問で申し訳ございませんが、どなたかWordPressにお詳しい方がいらっしゃいましたら何卒、宜しくお願い致します。
|
171
171
|
|
172
|
-
|
172
|
+
### 理由不明だが解決した方法(2022/03/14 23:09)
|
173
|
+
上記「// ロック解除」の処理を下記のようにしたところ、 **「厳密に」** `LOCK TABLES`もでき、errorMessage もなくなりました。しかしなぜ解決したのか?がわからずやはり不安な心境です。正しい処理なのか、他に問題はないのか、大いに疑問です。
|
174
|
+
|
175
|
+
原因がお分かりになる方いらっしゃいましたらご教示頂けませんでしょうか。
|
176
|
+
|
177
|
+
■ 上記「// ロック解除」の処理↓
|
178
|
+
```php
|
179
|
+
// ロック解除
|
180
|
+
if( $is_error ){
|
181
|
+
$wpdb->query('ROLLBACK');
|
182
|
+
$wpdb->query('UNLOCK TABLES');
|
183
|
+
error_log( 'ROLLBACK しました' );
|
184
|
+
|
185
|
+
}else{
|
186
|
+
$wpdb->query('COMMIT');
|
187
|
+
$wpdb->query('UNLOCK TABLES');
|
188
|
+
error_log( 'COMMIT しました' );
|
189
|
+
}
|
190
|
+
|
191
|
+
} catch (Exception $e) {
|
192
|
+
$result = $e->getMessage();
|
193
|
+
|
194
|
+
} finally {
|
195
|
+
restore_error_handler();
|
196
|
+
}
|
197
|
+
|
198
|
+
return $result;
|
199
|
+
}
|
200
|
+
```
|
201
|
+
■ 理由不明だが解決した方法↓
|
202
|
+
```php
|
203
|
+
// ロック解除
|
204
|
+
$wpdb->query('COMMIT');
|
205
|
+
error_log( 'COMMIT しました' );
|
206
|
+
|
207
|
+
} catch (Exception $e) {
|
208
|
+
$result = $e->getMessage();
|
209
|
+
$wpdb->query('ROLLBACK');
|
210
|
+
error_log( 'ROLLBACK しました' );
|
211
|
+
|
212
|
+
} finally {
|
213
|
+
restore_error_handler();
|
214
|
+
$wpdb->query('UNLOCK TABLES');
|
215
|
+
}
|
216
|
+
|
217
|
+
return $result;
|
218
|
+
}
|
219
|
+
```
|
220
|
+
|
221
|
+
|
222
|
+
|
1
インデントの調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
今回はPHPのNoticeエラーの場合でも throw~catch し、`ROLLBACK`させたいのです。
|
12
12
|
|
13
13
|
### 発生している問題
|
14
|
-
該当のソースコードのように、Noticeエラーの場合でもそれを
|
14
|
+
該当のソースコードのように、Noticeエラーの場合でもそれを throw~catch させようして`set_error_handler`を書きました。
|
15
15
|
|
16
16
|
しかしこうすると次の errorMessage のように、なぜか`wp_options`や`wp_comments`の`LOCK TABLES`を要求されます。
|
17
17
|
|
@@ -39,15 +39,15 @@
|
|
39
39
|
問題のソースコードは後述の`update()`で生じます。
|
40
40
|
```SQL
|
41
41
|
CREATE TABLE my_texts (
|
42
|
-
ID
|
42
|
+
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
|
43
|
-
,text
|
43
|
+
,text VARCHAR(10) NOT NULL
|
44
44
|
,PRIMARY KEY (ID)
|
45
45
|
);
|
46
46
|
INSERT INTO my_texts (text) VALUES ('text a');
|
47
47
|
|
48
48
|
CREATE TABLE my_tags (
|
49
|
-
ID
|
49
|
+
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
|
50
|
-
,tag
|
50
|
+
,tag VARCHAR(10) NOT NULL
|
51
51
|
,PRIMARY KEY (ID)
|
52
52
|
);
|
53
53
|
INSERT INTO my_tags (tag) VALUES ('tag a');
|