質問編集履歴

3

情報追記

2018/07/03 05:58

投稿

aokyun
aokyun

スコア13

test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,12 @@
24
24
 
25
25
  ```
26
26
 
27
+ 試みたこと
28
+
29
+ ・vacuumdb table_name -z db_nameに修正して実行
30
+
31
+  →exec()のreturn_val引数が1で異常終了
32
+
27
33
 
28
34
 
29
35
  ■パターン2・・・pg_execでSQLとして実行
@@ -44,6 +50,24 @@
44
50
 
45
51
  ```
46
52
 
53
+ 試みたこと
54
+
55
+ ・begin; vacuum; commit;
56
+
57
+  →VACUUM cannot run inside a transaction blockでエラー
58
+
59
+ ・end transaction; vacuum;
60
+
61
+  →VACUUM cannot be executed from a function or multi-command stringでエラー
62
+
63
+
64
+
65
+ (備考)
66
+
67
+ 社内の開発環境ではパターン1で正常に動作していますが、パターン2はどれもエラー
68
+
69
+ 本番環境ではパターン1、2ともにどの手法でもエラーとなっています。
70
+
47
71
 
48
72
 
49
73
  上記のロジックは関数化してあり、table_nameは引数で受け取っています。

2

ソースコードの追加

2018/07/03 05:58

投稿

aokyun
aokyun

スコア13

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,9 @@
12
12
 
13
13
  // 実行コマンド
14
14
 
15
- nohup vacuumdb テーブル名 -z DB名 &
15
+ $cmd = "nohup vacuumdb table_name -z db_name &";
16
+
17
+ exec($cmd, $output, $res);
16
18
 
17
19
 
18
20
 
@@ -30,7 +32,9 @@
30
32
 
31
33
  // 実行SQL
32
34
 
33
- VACUUM FREEZE ANALYZE テーブル名
35
+ $sql = "VACUUM FREEZE ANALYZE table_name";
36
+
37
+ pg_exec($sql);
34
38
 
35
39
 
36
40
 
@@ -39,6 +43,12 @@
39
43
  VACUUM cannot run inside a transaction block
40
44
 
41
45
  ```
46
+
47
+
48
+
49
+ 上記のロジックは関数化してあり、table_nameは引数で受け取っています。
50
+
51
+ どのテーブルにバキュームをかけるかはユーザが指定します。
42
52
 
43
53
 
44
54
 

1

脱字修正

2018/07/03 05:21

投稿

aokyun
aokyun

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 管理画面からvacuumが実行できる作成したのですが
1
+ 管理画面からvacuumが実行できる機能を作成したのですが
2
2
 
3
3
  エラーが発生し、どうにもうまくいきません。
4
4