Меню

Ошибка нужно быть владельцем расширения

i was trying to restore database on amazon rds.. i am getting error message like:

ERROR:  must be owner of extension plpgsql CREATE EXTENSION
ERROR:  must be owner of extension dblink  CREATE EXTENSION
ERROR:  must be owner of extension pgcrypto

Any idea how to solve this issue ?.

Abel Callejo's user avatar

Abel Callejo

12.7k9 gold badges64 silver badges79 bronze badges

asked Jul 9, 2017 at 5:00

Shamseer PC's user avatar

7

I believe both of those extensions are supported by RDS.
See:

$SHOW rds.extensions;

Retrieved from this link

As for enabling the syntax should be along the lines of

#enable_extension "dblink";

As Craig Ringer mentioned rds_super isn’t a real superuser. So, you can’t create the extensions. However, you should be able to enable them.

As in this example

So, you can ignore the errors, but need to manually enable whatever extensions you need. Also I think pl/pgsql may be already there. Try

$dx

answered Jan 25, 2020 at 3:30

Francisco1844's user avatar

Francisco1844Francisco1844

1,0883 gold badges12 silver badges21 bronze badges

i was trying to restore database on amazon rds.. i am getting error message like:

ERROR:  must be owner of extension plpgsql CREATE EXTENSION
ERROR:  must be owner of extension dblink  CREATE EXTENSION
ERROR:  must be owner of extension pgcrypto

Any idea how to solve this issue ?.

Abel Callejo's user avatar

Abel Callejo

12.7k9 gold badges64 silver badges79 bronze badges

asked Jul 9, 2017 at 5:00

Shamseer PC's user avatar

7

I believe both of those extensions are supported by RDS.
See:

$SHOW rds.extensions;

Retrieved from this link

As for enabling the syntax should be along the lines of

#enable_extension "dblink";

As Craig Ringer mentioned rds_super isn’t a real superuser. So, you can’t create the extensions. However, you should be able to enable them.

As in this example

So, you can ignore the errors, but need to manually enable whatever extensions you need. Also I think pl/pgsql may be already there. Try

$dx

answered Jan 25, 2020 at 3:30

Francisco1844's user avatar

Francisco1844Francisco1844

1,0883 gold badges12 silver badges21 bronze badges

@vshulgin

I’m trying to use dbmate to bring up database on newly provisioned postgres instance.
It does not matter if database exists or not, as well as extension uuid-ossp created with schema public or not. The db instance is AWS RDS PostgreSQL 9.5.
dbmate fails to execute _init.sql script from misgrations folder.
As the result, database created, but initial script is not executed.
The error is:
Error: pq: must be owner of extension uuid-ossp
I’m not sure what is pq in this context, and how to fix it.
Any ideas?

@wkalt

You might want to put

create extension "uuid-ossp";

at the top of _init.sql. It’s not a dbmate issue — you’re likely trying to create uuids without installing the necessary postgres extension.

@vshulgin

@wkalt Yes, I tried it already, added to template1 before I’m creating the new db.
create extension if not exists uuid-ossp with schema public;
It does not work. And got the same error. Who is pq?

@amacneil

It sounds like for whatever reason the user you’re using to postgres doesn’t have permission to use that extension. This isn’t a dbmate issue, I expect you will see the same error if you try running that same command using psql.

I recommend trying it with the default/root user created by RDS when you set up the database. If that doesn’t work, try creating a completely new RDS instance as a troubleshooting step.

@vshulgin

I’m trying to use dbmate to bring up database on newly provisioned postgres instance.
It does not matter if database exists or not, as well as extension uuid-ossp created with schema public or not. The db instance is AWS RDS PostgreSQL 9.5.
dbmate fails to execute _init.sql script from misgrations folder.
As the result, database created, but initial script is not executed.
The error is:
Error: pq: must be owner of extension uuid-ossp
I’m not sure what is pq in this context, and how to fix it.
Any ideas?

@wkalt

You might want to put

create extension "uuid-ossp";

at the top of _init.sql. It’s not a dbmate issue — you’re likely trying to create uuids without installing the necessary postgres extension.

@vshulgin

@wkalt Yes, I tried it already, added to template1 before I’m creating the new db.
create extension if not exists uuid-ossp with schema public;
It does not work. And got the same error. Who is pq?

@amacneil

It sounds like for whatever reason the user you’re using to postgres doesn’t have permission to use that extension. This isn’t a dbmate issue, I expect you will see the same error if you try running that same command using psql.

I recommend trying it with the default/root user created by RDS when you set up the database. If that doesn’t work, try creating a completely new RDS instance as a troubleshooting step.

Что такое grant параметр/трюк, который мне нужно предоставить текущему пользователю ( «userA» ), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю ( «userC» )?

Точнее, таблица контактов принадлежит пользователю C, и когда я выполняю следующий запрос для изменения владельца к пользователю B, связанному с userA:

alter table contact owner to userB;

Я получаю эту ошибку:

ERROR:  must be owner of relation contact

Но у пользователяA все необходимые права для этого обычно (опция предоставления «create on schema» должна быть достаточной):

grant select,insert,update,delete on all tables in schema public to userA; 
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;

Thks


Выход командной строки:

[email protected]:~# psql -U userA myDatabase
myDataBase=>dt contact
    List of relations
Schema |  Name   |   Type   |  Owner
-------+---------+----------+---------
public | contact | table    | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR:  must be owner of relation public.contact
myDataBase=>

4b9b3361

Ответ 1

Благодаря комментарию Майка, я перечитал документ, и я понял, что мой текущий пользователь (ака. userA, который уже имеет привилегию создания) не был прямым/косвенным членом новой собственной роли…

Итак, решение было довольно простым, я только что сделал этот грант:

grant userB to userA;

Что все люди; -)


Update:

Другое требование состоит в том, что объект должен принадлежать пользователю userA перед его изменением…

Ответ 2

Из прекрасного руководства.

Вы должны владеть таблицей, чтобы использовать ALTER TABLE.

Или быть суперпользователем базы данных.

ОШИБКА: должен быть владельцем отношения

Сообщения об ошибках PostgreSQL обычно находятся на месте. Это одно место.

Я использую Postgres для проекта django, и в настоящее время я реализую систему резервного копирования/восстановления базы данных, которая как можно проще выполняет pg_dump, когда пользователь нажимает backup, а затем pg_restore, когда они нажимают restore backup.

все кажется прекрасным и денди, пока он не попытается выполнить pg_restore, в котором он дает эту ошибку:

pg_restore: [архиватор (db)] ошибка из записи TOC 3206; 0 0 комментарий
Расширение plpgsql pg_restore: [архиватор (db)] не удалось выполнить запрос:
Ошибка: должен быть владельцем команды расширения plpgsql: COMMENT ON
Расширение plpgsql — это «процедурный язык PL / pgSQL»;

Я посмотрел, что такое plpgsql и т. д., И я понимаю это, и что касается ошибки, я попытался вручную установить «владельца расширения» пользователю, который выполняет скрипт и владеет самой базой данных, но это ничего не изменило, его действительно раздражает, так как его ошибка при попытке установить комментарий всех вещи!—1—>

все это создается автоматически pg_dump, поэтому строка комментария не может быть удалена, и нет флагов для отключения комментариев (которые я знаю), поэтому я действительно застрял в том, как решить эту проблему.

5 ответов


похоже, что pg_restore пытается восстановить некоторые дополнительные данные, которыми вы не владеете. Попробуйте добавить -n public опция командной строки pg_restore. Он сообщит pg_restore восстановить только содержимое общедоступной схемы. Ваша командная строка должна выглядеть как

pg_restore -U username -c -n public -d database_name

Я нашел следующий обходной путь на этой странице:

http://archives.postgresql.org/pgsql-general/2011-10/msg00826.php

идея состоит в том, чтобы использовать pg_restore-l для списка содержимого архива, grep из расширения, которое пользователь не имеет разрешения на восстановление, и использовать pg_restore-L для использования этого elided списка при восстановлении.

например:

pg_restore -l ~/database.dump | grep -v "EXTENSION - plpgsql" > ~/restore_elements
pg_restore -L ~/restore_elements ~/database.dump

Если возможно, я рекомендую вам удалить комментарий, который не удается восстановить перед созданием дампов.

можно сделать так:

COMMENT ON EXTENSION plpgsql IS null;

Если вы не хотите делать это для каждой вновь созданной базы данных, удалите комментарий из БД template1 (CREATE DATABASE… копирует эту базу данных.)

дампы, созданные после этого, должны восстанавливаться без ошибок.


вы загружаете в БД, которая была создана другим пользователем? Если возможно, попробуйте восстановить с помощью того же пользователя, который создал БД и ее существующие объекты.


работает для меня после этой команды —

Deepak@deepak:~$ sudo -i -u postgres
postgres@deepak:~$ psql 
psql (9.3.5)
Type "help" for help.

postgres=# GRANT ALL PRIVILEGES ON DATABASE database_name TO user;
postgres=# GRANT

Я получаю такую ​​ошибку:

pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 4034; 0 0 COMMENT EXTENSION pg_trgm  
pg_restore: [archiver (db)] could not execute query: ERROR: 
must be owner of extension pg_trgm
Command was: COMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams';

Когда я запускаю эту команду:

PGPASSWORD="$db_pwd" createdb -U "$db_user" -h "$db_host" -p 5432 --no-password -e "$db_name"

Как я могу исправить? Я предполагаю, что правильная вещь, чтобы сделать себя владельцем расширения pg_trgm, но как?

1 ответ

Лучший ответ

Это не команда createdb, которая вызывает эту ошибку, но pg_restore.

Это означает, что вы восстановили дамп из базы данных с расширением pg_trgm в качестве не суперпользователя.

Само расширение восстановлено как

CREATE EXTENSION IF NOT EXISTS pg_trgm;

Так что это не приведет к ошибке, если расширение уже существует, но следующее

COMMENT ON EXTENSION pg_trgm IS '...';

Приведет к ошибке для не суперпользователей.

Вы можете смело игнорировать эту ошибку.


2

Laurenz Albe
27 Авг 2019 в 07:40

Инструкция по созданию патчей (оперативных исправлений ошибок)

1. Патчи следует выпускать для оперативного исправления критичных ошибок в прикладных решениях и библиотеках, не дожидаясь выпуска очередного исправительного релиза («минуя» длительную процедуру выпуска и встраивания библиотек – в случае ошибок в библиотеках).

Критичность определяется ответственным за прикладное решение (библиотеку).

2. Технически патч – это расширение конфигурации, которое имеет небольшой размер (по сравнению с файлом поставки или обновления конфигурации), и установка которого не требует длительного обновления и блокировки работы пользователей. Для применения патча достаточно перезапустить сеанс.

Установка и удаление патчей реализована в 1С:Библиотека стандартных подсистем, а в 1С:Библиотека интернет-поддержки предусмотрена автоматическая загрузка патчей с портала 1C:Обновление программ. Вариант установки патчей (ручной или автоматический) в «коробках» контролирует администратор, а в модели сервиса – администратор сервиса (требуется подключение экземпляра облачного решения 1C:Fresh к порталу 1С:ИТС). Для «коробок» и облачных решений без подключения к интернету также возможно загружать интересующие патчи с портала 1C:Обновление программ на флешку и устанавливать с нее.

3. Создавать патчи можно с помощью конфигуратора или автоматически по исправленным в хранилище ошибкам с помощью 1С:Система проектирования прикладных решений (СППР). С помощью СППР патчи формируются автоматически по закладкам в репозитории git, рассчитывается применимость патча к версиям конфигурации (а для библиотек – к версиям всех прикладных решений, в которые она встроена); автоматизирована публикация и отзыв патчей, есть подписание патчей для базовых версий, а также целый ряд других полезных сервисов.

Создание патчей с помощью конфигуратора

Сначала исходную ошибку, которую требуется закрыть патчем, необходимо исправить и протестировать штатным образом. Изменения по исправлению ошибки поместить в рабочее хранилище проекта.

Затем открыть конфигуратором информационную базу одной из прошлых версий, в которой имеется исправляемая ошибка, и перенести изменения по ошибке в расширение конфигурации.

Для этого создать новое расширение конфигурации (если изменять ранее созданное расширение для другой ошибки, то это приведет к исключению при одновременном подключении этих расширений) и выполнить действия:

  1. Указать свойства расширения:
    • Имя – «EF_<произвольный_номер_ошибки>». Например, EF_00_00268773.
    • Префикс имен – берется из свойства имя.
    • Основные роли – снять флаг.
    • Основной язык – снять флаг.
    • В группе Совместимость – снять флаги у всех свойств.
    • Режим совместимости — указывать равный или ниже тому, что у конфигурации, для которого оно создается.
  2. Не удалять объект метаданных Язык – Русский.
  3. Перенести изменения в расширение-патч.
    • Для процедур и функций – встать на любой строчке и нажать ALF+SHIFT+F2, в диалоговом окне «Тип выбора» указать «Вызывать вместо».
    • В метод патча перенести текущую реализацию со всеми необходимыми изменениями.
  4. Создать и заполнить макет, который описывает содержимое патча и информацию о нем:
    • Добавить общий макет, имя которого совпадает с именем расширения. Например, EF_00_00268773.
    • Заполнить содержимое макета по примеру:

    Копировать в буфер обмена

<Patch xmlns=»http://www.v8.1c.ru/ssl/patch» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»>
<Name>EF_00_00268773</Name>
<Description>В веб-клиенте при сохранении некоторых печатных форм может быть недоступен выбор папки сохранения.</Description>
<UUID>abfde8f7-7ac4-43a9-9521-d291d0d0d6c3</UUID>
<ModifiedMetadata>ОбщаяФорма.СохранениеПечатнойФормы.ПриСозданииНаСервере</ModifiedMetadata>
<AppliedFor>
<ConfigurationName>СтандартныеПодсистемы</ConfigurationName>
<Versions>3.1.2.229,3.1.2.245</Versions>
</AppliedFor>
</Patch>

  • Name – должно совпадать с именем патча из расширения
  • Description – описание для пользователя, будет отображаться в списке установленных патчей.
  • UUID – уникальный идентификатор патча. Требуется создать новый, получив методом платформы Новый УникальныйИдентификатор.
  • ModifiedMetadata – изменяемые объекты метаданных.
  • AppliedFor – блок, в котором описывается к каким конфигурациям подходит данный патч.
  • ConfigurationName – имя конфигурации, берется из описания подсистемы в модуле ОбновлениеИнформационнойБазы<Сокращение>.
  • Versions – список версий конфигурации через запятую, для которой применим патч.
  • Рекомендуется при проверке патча проверять, что данный макет корректно читается и в нем нет ошибок – для этого нужно перейти к списку установленных исправлений (Администрирование – Обслуживание – Установленные исправления).

При переносе исправления ошибки в расширение следует учитывать следующее. Новые процедуры и функции следует добавлять в расширение с префиксом патча, например, вместо

«ИмяМоейПроцедуры» следует указывать

«EF_<произвольный_номер_ошибки>_ИмяМоейПроцедуры».

Если этого не сделать, то возникнет ошибка при удалении патча после обновления на новую версию конфигурации, в которой уже существуют одноименные новые процедуры и функции.

Создание патчей с помощью Системы проектирования прикладных решений (СППР)

Первичная настройка

  1. Развернуть сервер репозиториев git (например, GitLab) и указать его адрес в карточке проекта в СППР.
    • на закладке Разработка в группе Настройки Git-репозитория указать параметры подключения к репозиторию git, в котором ведется разработка.
      • В параметр Каталог git репозитория должен быть указан путь к сетевой папке, в которой будет храниться копия хранилища для создания патчей. В этой папке должен быть доступ у пользователя, под которым запущен сервер СППР.
      • В параметре Адрес git репозитория на сервере указать путь для подключения к удаленному серверу по протоколу SSH. Например, git@<мой_сервер>:ssl/ssl.git
      • Имя ветки – master.
    • для исправительных версий необходимо указать имя ветки репозитория – перейти к карточке версии и на закладке Разработка заполнить поле «Ветка разработки».
    • В настройках удаленного репозитория Git нужно добавить Deploy key для пользователя под которым работает сервер СППР.
    • для конвертации хранилища 1С в репозиторий git также использовать 1С:ГитКонвертер.
  2. Переключиться на закладку Общая информация проекта и заполнить поля Имя конфигурации – то, что указано в модуле ОбновлениеИнформационнойБазы<Сокращение> и Идентификатор программы – идентификатор в сервисах Интернет-поддержки пользователей. Если СППР будет использоваться только для создания патчей, без их публикации, то идентификатор программы заполнять не обязательно.
  3. В карточке версии:
    • на закладке Наследование ошибок и патчи включить флажок «Автоматически создавать патчи по публикуемым ошибкам»;
    • заполнить поле Версия платформы. Значение должно совпадать с режимом совместимости платформы для данной версии конфигурации.

Создание патчей для ошибок

  1. Исправить ошибку в хранилище проекта.
  2. В карточке ошибки в СППР внизу на закладке Исправление включить флажок Создать патч по исправлению ошибки .
  3. Описание патча автоматически заполнится из публикуемого описания ошибки.
  4. Дождаться готовности патча, проверить его на версии, в которой ошибка была привнесена, и нажать Проверен в карточке патча (для каждой версии, если патч создается сразу для нескольких версий проекта).
  5. Сформированный патч сохранить по кнопке Сохранить патч… и передать пользователям.
  6. Если СППР подключен к базе публикации, то нажать Опубликовать . После чего патч будет отправлен в базу публикации и вскоре окажется доступен для автоматической загрузки с портала 1C:Обновление программ.

Отзыв патчей с портала 1C:Обновление программ

В случае если ошибка исправлена неверно, требуется отозвать патч и выпустить новый. Но не следует перевыпускать патч или выпускать патч на патч.
При публикации патча из СППР необходимо:

  1. Открыть карточку интересующего патча.
  2. В меню Еще списка версий патча нажать Отозвать. После чего информация об отзыве патча будет отправлена на портал 1C:Обновление программ.

Если патч публиковался вручную на портале 1C:Обновление программ, то отзыв так же выполняется вручную.

После доисправления ошибки появится возможность вновь опубликовать патч для нее.

Если патч не удалось создавать автоматически

Не во всех случаях возможно создать патч автоматически, например:

  • изменения по ошибке пересекаются с другим исправлением и патч нельзя применить ни к одной из опубликованных сборок конфигурации;
  • содержит изменения, которые не касаются кода и на данный момент не поддерживаются автогенератором патчей в СППР;
  • особенности или ограничения автогенератора патчей.

В первых двух случаях рекомендуется выполнить оставшиеся действия вручную, внеся изменения непосредственно в сформированное расширение, и опубликовать получившийся патч.

Рекомендации и ограничения технологии патчей

Патчи подходят для исправления ошибок:

  • в программных модулях (общих модулях, модулях форм, модулей менеджеров, объектов, наборов записей и пр.)
  • в «коробочных» версиях, в модели сервиса и в базовых версиях;
  • в типовых (на полной поддержке), доработанных типовых и нетиповых конфигурациях (которые включают публикуемые библиотеки).

Патчи не подходят:

  • для исправления обработчиков обновления, которые портят данные;
  • для изменения пользовательских данных;
  • для добавления реквизитов, справочников, перечислений и других объектов метаданных, хранящих данные.

Один патч должен «точечно» исправлять только одну ошибку

В одном патче для одной ошибки могут содержаться исправления сразу для нескольких процедур и функций различных модулей одной конфигурации (библиотеки). Но если для исправления ошибки необходимо внести изменения синхронно в код двух и более библиотек (или, например, конфигурацию и библиотеку), то следует разделить ее на несколько ошибок на каждую библиотеку, и выпустить для этих ошибок несколько отдельных патчей.

Патчи не должны создаваться «внахлест»

Если для исправления двух разных ошибок требуется исправить одну и ту же процедуру (функцию), то следует создать два патча и ограничить их область применимости (по версиям).

В случае если одна ошибка имеет разные способы исправления в нескольких поддерживаемых версиях прикладного решения, следует выпускать несколько патчей для каждой версии.

Тщательно проверять патчи

Поскольку патч публикуется максимально оперативно, то рекомендуется дополнительно проверять патч отдельно от проверки исправления ошибки:

  • в опубликованной версии конфигурации (библиотеки) – сначала убедиться, что ошибка воспроизводится;
  • затем установить патч и убедиться, что ошибка исправлена.

Не следует полагаться только на успешное подключение патча к конфигурации, или что патч успешно собран автоматически (есть также ограничения технологии патчей и платформы).

Проверка патча важна в полном объеме, во всех ветках, для которых он будет публиковаться.

Кроме того, для проверки патчей настоятельно рекомендуется:

  • аудит исправления ошибки другим разработчиком;
  • перекрестная проверка исправления тестировщиком или другим разработчиком.

Если проверка исправления ошибки требует регламентного тестирования (например, обязательно подтверждение исправления регрессионными тестами и т.п.), то патч также не следует публиковать до того, как исправление ошибки пройдет все предусмотренные этапы проверки.

Патч рекомендуется публиковать только после выполнения перечисленных этапов проверки.

Подпись патчей для базовых версий конфигураций

<путь к платформе> DESIGNER /IBConnectionString <строка подключения> /SignCfg <путь к подписанному патчу> -Type File -digisign <путь к закрытому ключу (*.pem)> -File <путь к исходному патчу>

УНФ базовая и расширения

Подскажите, разрешено ли подключать к базовой УНФ расширения (допустим через «все функции»)? Не нарушу ли я лицензию 1С? А то конфигуратором лазить нельзя, а расширения к нему приравниваются?

В базовых версиях прикладных решений работа с расширениями не поддерживается. (с) https://its.1c.ru/db/v8311doc#bookmark:dev:TI000001923

Если у тебя расширение доступно — значит у тебя лицензия на платформу не базовая, а ПРОФ.

(11) всё-таки _расширения_ работают на платформе _проф_
И им в этом случае как бы и все равно, а в какой же базе работает это расширение. Базовая база? Ну и 1С предоставляет свою поддержку для базовой версии.

Можно предположить, что со временем эту фичу уберут, когда базовая база способна работать на платформе с проф лицензией, что значительно расширяет ее возможности.

И это не единственная такая прикольная фича у платформы 1С. Можно и возможности серверного режима получать абсолютно ничего не взламывая, просто использовать и все штатными средствами.
Причем, теперь уже два варианта для получения режима сервера доступны, а раньше был только один. Причем, прямо «из коробки»

Ошибка применения расширения конфигурации

Не получается адаптация конфигурации «1С:Розница 2.2» Вот с этого сайта http://online-modul.ru/kkt_server.html#driver .
Пытаюсь подключить две розници с разными базами к одному ККМ атол 30ф. На рознице 2.3 которая не подключена к ккм. адаптация проходит хорошо, а на рознице 2.2 к которой ккм подключен физически выдает эти ошибки

(Критичная) : Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

: Ошибка при вызове метода контекста (Записать): Ошибка применения расширения конфигурации: Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

В чем может быть проблема?

  • Скопировать ссылку
  • Перейти

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

Не получается адаптация конфигурации «1С:Розница 2.2» Вот с этого сайта http://online-modul.ru/kkt_server.html#driver .
Пытаюсь подключить две розници с разными базами к одному ККМ атол 30ф. На рознице 2.3 которая не подключена к ккм. адаптация проходит хорошо, а на рознице 2.2 к которой ккм подключен физически выдает эти ошибки

(Критичная) : Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

: Ошибка при вызове метода контекста (Записать): Ошибка применения расширения конфигурации: Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

В чем может быть проблема?
(2)Там есть файл для 2.2 и 2.3. только 2.2 почему то ругается

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка номер 8 на ваз 2115 инжектор 8 клапанов что означает
  • Ошибка обнаружения питания не удается найти конфигурацию для питания p21 нужен p0