Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка запуска приложения при отсутствии таблиц битрикса #22

Open
senor-artemisio opened this issue Jan 17, 2017 · 6 comments

Comments

@senor-artemisio
Copy link

senor-artemisio commented Jan 17, 2017

Если таблицы битрикса еще не созданы, то приложение запустить невозможно:

$ ./bin/jedi 

                                                              
  [Bitrix\Main\DB\SqlQueryException]                          
  Mysql query error: Table 'empty_db.b_option' doesn't exist  

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

Также при интеграции приложения с phinx и запуска применения миграций - невозможно создать миграцию создающую начальные таблицы битрикса по той же причине - приложение не запускается.

@matiaspub
Copy link

создание битрикса должно быть ./bin/symfony/console install:bitrix
можно даже в установщик jedy добавить создание линка
jedy конкретно в установке битрикса мало чем полезен
ну и коносльные команды бывают нередко полезны без инициализации битрикса

@nook-ru
Copy link
Contributor

nook-ru commented Jan 17, 2017

Все команды джедая (почти все) завязаны на API битрикса. Оно, как ни крути, без своих таблиц в базе не заведется.

Как вариант, можно сделать импорт начального дампа частью env:init. И да, неплохо было бы подключать ядро только при исполнении команд — наследников класса BitrixCommand.

@matiaspub,

jedy конкретно в установке битрикса мало чем полезен

Могу сделать команду для скачивания и установки битрикса.

@matiaspub
Copy link

matiaspub commented Jan 17, 2017

@nook-ru

Могу сделать команду для скачивания и установки битрикса.

не понял, но ведь в jedy - идеологически неправильно ее хранить, да и что такой установщик может взять от jedy? еще не установленное ядро Битрикс?

@nook-ru
Copy link
Contributor

nook-ru commented Jan 17, 2017

@matiaspub

не понял, но ведь в jedy - идеологически неправильно ее хранить

Не обязательно как часть jedi, хотя лично мне не хочется рассматривать его исключительно как инструмент для CI.

@mmjurov
Copy link

mmjurov commented Jan 17, 2017

У меня была аналогичная проблема, но я решил ее созданием команды, которая отвязана от ядра.

Создаем класс, наследник от \Symfony\Component\Console\Command\Command, или любого другого его предка, но не \Notamedia\ConsoleJedi\Application\Command\BitrixCommand. В принципе подойдет \Notamedia\ConsoleJedi\Application\Command\Command

В .jedi.php добавляем свою команду с помощью ключа commands:

return [
    'web-dir' => 'htdocs',
    'env-dir' => 'environments',
    'useModules' => true,
    'commands' => [new MySuperMigrationCommand()] // тут можно зафигачить любой массив с любыми командами
];

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

Или это wrong way?

@mmjurov
Copy link

mmjurov commented Jan 17, 2017

Поправка. Заметил, что работает это только в том случае, если в dbconn стоит следующая опция

define("DELAY_DB_CONNECT", true);

Судя по всему она откладывает подключение к БД "на потом", и подключается к БД в момент первого к ней обращения через API. В моем случае это помогло (на машине, на которой я запускаю джедая даже mysql нет)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

4 participants