質問編集履歴
3
情報追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,6 +11,9 @@
|
|
11
11
|
// エラーメッセージ
|
12
12
|
ignoring input and redirecting stderr to stdout
|
13
13
|
```
|
14
|
+
試みたこと
|
15
|
+
・vacuumdb table_name -z db_nameに修正して実行
|
16
|
+
→exec()のreturn_val引数が1で異常終了
|
14
17
|
|
15
18
|
■パターン2・・・pg_execでSQLとして実行
|
16
19
|
```
|
@@ -21,7 +24,16 @@
|
|
21
24
|
// エラーメッセージ
|
22
25
|
VACUUM cannot run inside a transaction block
|
23
26
|
```
|
27
|
+
試みたこと
|
28
|
+
・begin; vacuum; commit;
|
29
|
+
→VACUUM cannot run inside a transaction blockでエラー
|
30
|
+
・end transaction; vacuum;
|
31
|
+
→VACUUM cannot be executed from a function or multi-command stringでエラー
|
24
32
|
|
33
|
+
(備考)
|
34
|
+
社内の開発環境ではパターン1で正常に動作していますが、パターン2はどれもエラー
|
35
|
+
本番環境ではパターン1、2ともにどの手法でもエラーとなっています。
|
36
|
+
|
25
37
|
上記のロジックは関数化してあり、table_nameは引数で受け取っています。
|
26
38
|
どのテーブルにバキュームをかけるかはユーザが指定します。
|
27
39
|
|
2
ソースコードの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
|
6
6
|
```
|
7
7
|
// 実行コマンド
|
8
|
-
nohup vacuumdb
|
8
|
+
$cmd = "nohup vacuumdb table_name -z db_name &";
|
9
|
+
exec($cmd, $output, $res);
|
9
10
|
|
10
11
|
// エラーメッセージ
|
11
12
|
ignoring input and redirecting stderr to stdout
|
@@ -14,12 +15,16 @@
|
|
14
15
|
■パターン2・・・pg_execでSQLとして実行
|
15
16
|
```
|
16
17
|
// 実行SQL
|
17
|
-
VACUUM FREEZE ANALYZE
|
18
|
+
$sql = "VACUUM FREEZE ANALYZE table_name";
|
19
|
+
pg_exec($sql);
|
18
20
|
|
19
21
|
// エラーメッセージ
|
20
22
|
VACUUM cannot run inside a transaction block
|
21
23
|
```
|
22
24
|
|
25
|
+
上記のロジックは関数化してあり、table_nameは引数で受け取っています。
|
26
|
+
どのテーブルにバキュームをかけるかはユーザが指定します。
|
27
|
+
|
23
28
|
google先生に聞いてみたものの、試せるものは試してみましたがうまくいきません。
|
24
29
|
コマンドラインやpgadminのような管理ツールからの実行はうまくいきます。
|
25
30
|
|
1
脱字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
管理画面からvacuumが実行できる作成したのですが
|
1
|
+
管理画面からvacuumが実行できる機能を作成したのですが
|
2
2
|
エラーが発生し、どうにもうまくいきません。
|
3
3
|
|
4
4
|
■パターン1・・・execにてコマンドを実行
|