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

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

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

Комментарии

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

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

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

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

9 апреля 2020 в 14:17

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

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

к примеру

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

9 апреля 2020 в 14:24

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

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

9 апреля 2020 в 14:47

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

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

9 апреля 2020 в 14:54

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

9 апреля 2020 в 15:01

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

9 апреля 2020 в 15:18

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

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

9 апреля 2020 в 15:45

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

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

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

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

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

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

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

9 апреля 2020 в 17:29

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

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

 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

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

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

10 апреля 2020 в 23:18

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

11 апреля 2020 в 11:23

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))
11 апреля 2020 в 11:37

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

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

11 апреля 2020 в 11:54

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

11 апреля 2020 в 12:03

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

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

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

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

11 апреля 2020 в 12:05

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

11 апреля 2020 в 12:28

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

12 апреля 2020 в 11:33

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

12 апреля 2020 в 19:02

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

12 апреля 2020 в 19:05

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

12 апреля 2020 в 19:11

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

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

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

12 апреля 2020 в 19:14

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

12 апреля 2020 в 19:17

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

12 апреля 2020 в 22:54

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

13 апреля 2020 в 10:25

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

13 апреля 2020 в 11:14

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

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

17 апреля 2020 в 10:36