|
|
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Имеется CentOS 7 + PostgreSQL 9.4 + pgAgent 9.4 + pgAdmin 1.22. Есть две базы, с помощью pgAdmin настроены два задания для pgAgent c двумя шагами в каждом. Первый шаг выполняется команда REINDEX DATABASE db1, во втором шаге VACUUM ANALYZE. В другом задании на первом шаге вместо db1 записано db2, второй шаг точно такой - же как и в первом задании. Первое задание выполняется по расписанию без проблем. второе завершается ошибкой на первом шаге, "REINDEX DATABASE db2 можно использовать только с текущей базой". Вопрос в том как поменять текущую базу? В шагах использовал и удаленное подключение и локальное, безрезультатно. Почему текущей базой всегда является одна и та же база непонятно. Подскажите пожалуйста, как решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 11:08 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
liivan, у шага есть поле "БД" (jstdbname) в интерфейсе -- при флаге "Локально" -- комбо. а вообще говоря пгагент -- довольно скорбное поделие, с застарелой ошибкой с использованием локалей при сохранении текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 13:12 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
qwwq, qwwqу шага есть поле "БД" (jstdbname) Поле есть. И оно заполнено нужной базой данных, только это не помогает. Ставлю в настройках локально указываю нужную базу, ошибка все одно выдаётся qwwqв интерфейсе -- при флаге "Локально" -- комбо. Извините за тупость, но смысл этой строки для меня остался загадкой. Разъясните пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 14:09 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
liivanИзвините за тупостьне извиню. приведите строку настроек шага из pgagent.pga_jobstep , и соответств. ошибку. ошибку лучше всего из лога самого постгреса (в логе настроить вывод имени БД в префикс), но можно и из pgagent.pga_jobsteplog -- если затрудняетесь найти в логах пг. будем смотреть на. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 15:15 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
qwwq, Фрагмент postgresql.log < Motivation postgres 2016-06-08 17:02:56.540 SAMT >ОШИБКА: переиндексировать можно только текущую базу данных < Motivation postgres 2016-06-08 17:02:56.540 SAMT >ОПЕРАТОР: REINDEX DATABASE Motivation Настройка шага задания jstidjstjobidjstnamejstdescjstenabledjstkindjstcodejstconstrjstdbnamejstonerror"""1"1"Пылесос мотивации""''"TRUE"s""VACUUM ANALYZE""''""Motivation""f""""2"1"Переиндексация мотивации""''"TRUE"s""REINDEX DATABASE Motivation""''""Motivation""i""" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 16:26 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
liivanqwwq, Фрагмент postgresql.log < Motivation postgres 2016-06-08 17:02:56.540 SAMT >ОШИБКА: переиндексировать можно только текущую базу данных < Motivation postgres 2016-06-08 17:02:56.540 SAMT >ОПЕРАТОР: Код: sql 1. Настройка шага задания jstidjstjobidjstnamejstdescjstenabledjstkindjstcodejstconstrjstdbnamejstonerror"""1"1"Пылесос мотивации""''"TRUE"s""VACUUM ANALYZE""''""Motivation""f""""2"1"Переиндексация мотивации""''"TRUE"s""REINDEX DATABASE Motivation""''""Motivation""i""" "Motivation"<>Motivation but "motivation"=Motivation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 17:13 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
qwwq, Спасибо большое! Просто поменять букву в запросе не помогло. В итоге полностью удалил Motivation, создал базу motiv и процесс пошёл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 08:55 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
liivan, Вы не поняли. Postgres по умолчанию приводит все идентификаторы к нижнему регистру, т.е. Motivation=motivation=MOTIVATION. Если заключить идентификатор в двойные кавычки, то используется то, что в кавычках, включая пробелы и прочие национальные символы. В логе видно, что база называется Motivation (с большой буквы). Вам следовало индексировтаь так: REINDEX DATABASE "Motivation" https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 10:12 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
vyegorov, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 10:29 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
Тем не менее, здесь есть нюансы. Да, postgres хранит в системном каталоге имена объектов в нижнем регистре, но поведение с именами баз данных и, например, таблицами отличается. Для баз данных мы должны использовать имена в нижнем регистре: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Однако работа с именами таблиц не зависит от регистра: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Такое поведение для имен БД сбивает с толку, ведь принято считать, что без использования кавычек имена объектов SQL регистронезависимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 12:35 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Опытным путем выяснилось, что "косяк" именно в команде psql \connect. Команды SQL ALTER|DROP|REINDEX DATABASE прекрасно работают с именем БД в любом регистре (если не использовались кавычки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 12:48 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, В данном случае используется команда `\c` psql клиента, это не уровень языка SQL. Думаю, что это эффект работы libpq. Да, неочевидно. Потому и предпочитаю всегда использовать нижний регистр, что в ПЖ, что в других базах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 12:59 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов<> Да, postgres хранит в системном каталоге имена объектов в нижнем регистре, но поведение с именами баз данных и, например, таблицами отличается. это неправда. или, как минимум, неудачная формулировка. постгрес хранит имена так, "как они введены". но для способа ввода символов не латиницы и /или латиницы в верхнем регистре в самом пж--SQL предусмотрены синтаксические приседания. ("ку" надо сказать, короче) иначе постгрес будет смотреть на ввод как на , ну вы поняли. т.е. будет интерпретировать [ввод] как введённое в нижнем регистре. если латиница. а если не латиница, и в имени ещё, не дай, встречаются пробел или точка какая--то -- то и вообще откажется воспринимать в качестве имени. т.е. это особенность постгресовского синтакс анализа SQL, а совсем не способа хранения имен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 13:21 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
qwwq, Насколько помню, SQL стандарт говорит о том, что имена объектов регистронезависимы в случае, если эти имена: - содержат только латиницу, цифры, знак подчеркивания (, возможно $). - начинаются не с цифры Это правильный подход к именованию объектов. Во всех остальных случаях: нелатиница, спец символы и пробелы - имена должны быть в двойных кавычках. Это неправильный подход с кучей потенциальных проблем. В случае "правильного" подхода СУБД хранят имена объектов кто в нижем (PostgreSQL), кто в верхнем (Oracle) регистре. Так объекты легче искать. И особых особенностей синтакс анализа у PostgreSQL я здесь не вижу. Кроме явной ошибки в libpq с именами БД при подключении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 13:59 |
|
||
|
Обслуживание нескольких баз с помощью pgAgent
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, "а он всегда был спорщиком"(с) кроме работы в "геркулесе" у вас ещё масса забавных черт характера. вас там, в геркулесе, всех таких подбираюд ? ещё раз -- хранит пж то, что хранит. можете открыть системные -- и увидите. а "принимает на хранение" (синтаксически разбирает) -- по понятиям. в эти понятия входит кукуканье для имен, "содержащих, и т.п. блаблабла". имена без куку воспринимаются как введённые в нижнем регистре ("воспринимать" -- функция анализа, в д.с. -- синтаксического). у меня всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39253531&tid=1997176]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
214ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 484ms |

| 0 / 0 |
