|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Всем здравствуйте, может подскажет кто, ситуация следующая, есть триггера, вот листинг его части Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
И INSERTа в таблицу не происходит, хотя всё проходит штатно, если этот же инсерт сделать в пгадмине то всё будет ок, всё запишется. И не понимаю куда капать, вроде как таковой команды коммита в plpy нету или я чего-то не знаю) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2017, 16:18 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Блин ну ни у кого нету предположений, хотя бы из разряда фантастики что ли, а то по вариантам совсем глухо у меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 11:13 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktor, когда покажете весь код тригера, может кто и подскажет. а то, как знать что вы там в ретурн пихаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 11:55 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Lonepsycho, вот) Но разве INSERT не должен уже отработать до того как что-то вернётся в триггере, просто результаты первого insert используются потом во втором. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:11 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktor, BEGIN; INSERT... ROLLBACK; вставленные значения останутся? функция == транзакция (какбы). а описание тригера можно увидеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 13:57 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Lonepsycho, BEGIN;INSERT...ROLLBACK; - это прям в текст запроса в функции вставить? Если так, то я получаю - current transaction is aborted commands ignored until end of transaction block postgres Не совсем правильно про функцию эту сказал, эта функция с инсертом это функция функции триггера Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:41 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Lonepsycho, На сколько мне известно, эта функция прекрасно работала на сервере PostgreSQL 9.3 (но сам не проверял), потом мы переехали на версию 9.5 и тут она начала чудачить, логично думать что недонастроили что-то, какой-то автокоммит для plpy или что-нибудь такое или версия plpy некорректно работает с 9.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:45 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktor, а что у вас в функции podd.before_roadadsigns_iud() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:55 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktorLonepsycho, BEGIN;INSERT...ROLLBACK; - это прям в текст запроса в функции вставить? Если так, то я получаю - current transaction is aborted commands ignored until end of transaction block postgres про бегин, инсерт, ролбек, был реторический вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:57 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Lonepsycho, В общем мне кажется нужно копать в сторону версий или настройки. Я сейчас поднял наш старый сервак с версией 9.3 и там всё прекрасно отработало, код 1 в 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 15:13 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktor, a plpythonu функции у вас на новом сервере летают нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 15:24 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
Lonepsycho, ну вообще да, иначе это было бы сразу заметно (), посмотрел версию вроде всё ок postgresql-plpython-9.5 (Installed: 9.5.8-0ubuntu0.16.04.1). Но в базе в расширениях вижу такое: Код: plsql 1. 2. 3.
Возникает вопрос, всегда ли он пишет там версию 1.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 15:43 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktor, думаю вы не там ищете. у вас или кто--то откатывает транзакцию либо триггер отдизейблен нотисы то вы хотя бы видите ? вот эти вот : Код: plaintext
либо вы ожидаете срабатывания триггера в режиме реплики, не настроив его в ENABLE ALWAYSE/REPLICA см тут https://www.postgresql.org/docs/9.6/static/sql-altertable.html со слов Код: plaintext 1. 2.
вставьте plpy.error сразу на входе -- и посмотрите, попадаете вы в триггер или нет. ещё некоторые пытаются обнаружить записи снаружи -- до полного коммита транзакции. бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:09 |
|
plpy.execute не делает коммит для записи в БД
|
|||
---|---|---|---|
#18+
diktor, и ещё, сдаётся , вы в бефоре--триггере (которого не показали) пытаетесь найти обрабатывемую запись уже в таблице. удивлю вас -- её там пока нет. в бефоре--триггере надо обращаться к нью.* а не к таблице, где ид==нью.ид. попытайте счастья с афтер триггером. некоторые их не различают, а зря. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:18 |
|
|
start [/forum/topic.php?fid=53&msg=39552313&tid=1996113]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 152ms |
0 / 0 |