Как импортировать не все конфигурации а только часть?

Главные вкладки

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 13:42

После импорта архива с полной конфигурацией сайта происходит ряд ошибок. Как их вылавливать? Можно ли импортировать не все конфиги, а только половину? Чтобы выяснить какой именно конфиг виноват.

Комментарии

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 14:17

итак экспортирую

drush config-export
[notice] Differences of the active config to the export directory:
тут таблица

теперь импортирую:
drush cim --partial

и как только половину конфигов указать?

Аватар пользователя ivnish ivnish 9 апреля 2020 в 14:24

Никак, нет такой возможности. Можно указать только другой каталог в котором будут нужные конфиги

drush cim --partial --source=modules/modulename/config/install

к примеру

Если ты для импорта используешь drush cim, то он тебе прямо напишет ошибку и что именно ему не нравится

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 14:47

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

Моя задача частями перекинуть 1000 файлов конфигов, чтобы узнать какие настройки сайта вызывают проблему. Но не по одному же.

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 14:54

делаю drush config-export и в config/sync/ выгружается 1000 *yml файлов. Те же самые файлы архивом получаю при экспорте полной конфигурации сайта

drush cim - прекрасно работает - все эти файлы импортирует.

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 15:01

Проблема в том, что после импорта на сайте ряд ошибок, но не с импортом.
Вот я и хочу выявить какая из настроек сайта эти ошибки вызывает. Я думаю так: импортировать 500 из 1000 конфигов. Потом еще 250. И так по названию конфига выловлю какие настройки или какие модули виноваты.
Вот только как импортировать только часть конфигов?

Аватар пользователя ivnish ivnish 9 апреля 2020 в 15:18

Мой совет. Заливаешь БД с прода на локалку, делаешь импорт конфигов. Ищешь проблему после импорта и исправляешь ее. После этого делаешь импорт на проде

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 15:45

Примерно для этого я все это и затеял.

Я вот думаю когда происходит drush cim оно ж по одному все конфиги закачивает. Можно ли чтоб оно к следующему файлу переходило после того, как я что-то нажал?

Аватар пользователя VasyOK VasyOK 9 апреля 2020 в 17:29

Пока что делаю так.
drush cim > yes

мне пишет
[notice] Синхронизация конфигурации: ...

Периодически стопорю процесс Ctrl+Z. Захожу в админку сайта - ошибки нет.
Но после

[notice] Завершение синхронизации конфигурации.
[success] The configuration was imported successfully.

ошибка на сайте появляется.

Причем я очень удачно застопорил процесс за 2 шага да [success]. Даже в это время ошибки на сайте не было. А вот после [success] - появилась.

Что-то можно посоветовать?

Аватар пользователя VasyOK VasyOK 10 апреля 2020 в 23:18

Ряд можно увидеть в соседних темах созданных мной. Например есть проблема: нельзя указать у термина родитель. подозреваю это влияет на другие мои темы.

Проверил еще раз:

 drush cim > yes
...
 [notice] Синхронизация конфигураций: update core.entity_view_display.node.forum.teaser.
 [notice] Синхронизация конфигураций: update core.entity_view_display.node.forum.default.
^Z
[8]+  Stopped                 drush cim > yes

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

 drush cim > yes
 [notice] Завершение синхронизации конфигурации.
 [success] The configuration was imported successfully.

и после этого редактировать термины нельзя Sad

Может есть какая-то команда чтобы импортировать конфигурацию до упора, но не кончать ее?

Вообще насколько мои методы рабочие? Проблему то я решаю. Кто-то еще делает так?

Аватар пользователя VasyOK VasyOK 11 апреля 2020 в 11:23

Хорошо, тогда другой вопрос. Файлы конфигураций хранятся в config/sync/.
Если все файлы оттуда удалить, как их обратно сгенерировать?

Аватар пользователя VasyOK VasyOK 11 апреля 2020 в 11:37

drush cex выдает:

[error]  TypeError: Argument 2 passed to Drupal\Core\Config\DatabaseStorage::write() must be of the type array, bool given, called in [папка сайта]/web/core/lib/Drupal/Core/Config/StorageCopyTrait.php on line 33 in Drupal\Core\Config\DatabaseStorage->write() (line 120 of [папка сайта]/web/core/lib/Drupal/Core/Config/DatabaseStorage.php) #0 [папка сайта]/web/core/lib/Drupal/Core/Config/StorageCopyTrait.php(33): Drupal\Core\Config\DatabaseStorage->write('views.view.taxo...', false)
#1 [папка сайта]/web/core/lib/Drupal/Core/Config/ExportStorageManager.php(87): Drupal\Core\Config\ExportStorageManager::replaceStorageContents(Object(Drupal\Core\Config\CachedStorage), Object(Drupal\Core\Config\DatabaseStorage))
Аватар пользователя VasyOK VasyOK 11 апреля 2020 в 11:54

В settings все по умолчанию:
$settings['config_sync_directory'] = '../config/sync';
сайт через composer установлен

на запись думаю доступно, т.к. ошибка происходит только после того, как /config/sync очищено.

Аватар пользователя VasyOK VasyOK 11 апреля 2020 в 12:03

Я как бы не знаю какая вьюха проблемная.
Ну и у меня задача, не импортировать, а экспортировать. Пока что после очистки /config/sync мне это не удается.

Аватар пользователя ivnish ivnish 11 апреля 2020 в 12:05

Я как бы не знаю какая вьюха проблемная.

В тексте ошибки вьюха указана.

Ну и у меня задача, не импортировать, а экспортировать.

Продолжай игнорировать советы по устранению ошибок, подождем пока проблема пройдет сама собой

Аватар пользователя VasyOK VasyOK 11 апреля 2020 в 12:28

"В тексте ошибки вьюха указана" - теперь понял. После удаления вьюхи ошибка по drush cex также пишется.
Кароче я понял что моими методами БД получается кривой.

Аватар пользователя VasyOK VasyOK 12 апреля 2020 в 11:33

А можно как-то перенести конфигурации с одного сайта на другой не зная названий самих конфигураций? Типа на страницу перехожу и чтоб было показано какие конфигурации в формировании этой страницы участвуют.

Аватар пользователя VasyOK VasyOK 12 апреля 2020 в 19:02

Допустим я хочу с одного сайта на другой тип материала перенести. Уже не сколько конфигов, как сам тип так и отдельно его форма. А еще поля типа, поля могут на таксономию ссылаться.
Неужели нет такого, что на редактировании типа контента посмотреть все влияемые на него конфиги?

Аватар пользователя ivnish ivnish 12 апреля 2020 в 19:05

Это же легко. Создаешь на первом сайте тип материала и его поля. Запускаешь drush cex, он тебе пишет имена всех конфигов которые будут созданы. Выписываешь эти имена файлов. Жмешь yes, конфиги экспортируются. Копируешь их на второй сайт, делаешь drush cim

Аватар пользователя VasyOK VasyOK 12 апреля 2020 в 19:11

"он тебе пишет имена всех конфигов" так мне не надо всех, надо только те, что влияют на тип материала

Аватар пользователя ivnish ivnish 12 апреля 2020 в 19:14

Попробуй читать внимательнее. Я писал "он тебе пишет имена всех конфигов которые будут созданы"

А созданы будут именно те, которые относятся к твоему новому типу материала

И естественно, нужно перед созданием нового типа материала выгрузить конфиги, чтобы потом не путаться где старые, а где новые

Аватар пользователя vlucas vlucas 12 апреля 2020 в 19:17

Можно смотреть в зависимости конфигов. Можно использовать гит. Можно использовать разные хранилища конфигов: stage, dev... Сначала сделали экспорт в sync. Создали свой тип материала. Сдели экспорт уже в stage - посмотрели разницу. На другом проекте сделали импорт - cim - вам сказал чего не хватает - донесли.
Можно ещё config:export:content:type

Аватар пользователя gun_dose gun_dose 12 апреля 2020 в 22:54

Поставь features, включи features ui, он показывает, кто от кого зависит. Кроме того он позволяет экспортировать конфиги частями.

Аватар пользователя VasyOK VasyOK 13 апреля 2020 в 10:25

Честно говоря был неудачный опыт работы с фичерс в D7 и это как бы стало причиной перехода на D8. Ну я посмотрю привнесли ли что-то новое.

Аватар пользователя gun_dose gun_dose 13 апреля 2020 в 11:14

В восьмёрке features полностью основан на конфигах и по сути ничего нового не делает, кроме, выпиливания uuid из конфигов при экспорте, что очень круто при перекидывании конфигов с одного сайта на другой. А features ui позволяет более наглядно видеть зависимости и автоматически их собирать. В общем, это теперь просто ещё один инструмент для работы с конфигурациями.

Аватар пользователя VasyOK VasyOK 17 апреля 2020 в 10:36

Потому что это одна инсталяшка Друпала. Т.е. файлы Гитом не перносились с другой. Да,с композером сайт устновлен.

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