Nextras ORM – migrations z console

prog1
Člen | 45
+
-2
-

Ahoj,
používám Nextras ORM v projektu v Nette 3 a pokud spustím migrace příkazem php bin/console migrations:create, dostanu zprávu
There are no commands defined in the "migrations" namespace.
Entrypoint v bin/console mám, v common.neon mám
# Default extensions ===================

extensions:
	dbal: Nextras\Dbal\Bridges\NetteDI\DbalExtension
	orm: Nextras\Orm\Bridges\NetteDI\OrmExtension
	migrations: Nextras\Migrations\Bridges\NetteDI\MigrationsExtension
	console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)


console:
	url: https://contributte.org

migrations:
    dir: %appDir%/../migrations # migrations base directory
    driver: mysql               # pgsql or mysql
    dbal: nextras               # nextras, nette, doctrine or dibi
    withDummyData: %debugMode%

Kde bych měl hledat chyby?

Jan Tvrdík
Nette guru | 2595
+
0
-

Vypadá to dobře, takže bych zkusil smazat temp.

prog1
Člen | 45
+
0
-

Smazal jsem cache a vyhazuje mě to chybu:

ERROR: Return value of Nette\DI\Config\Adapters\PhpAdapter::load() must be of the type array, int returned
Check log to see more info.
MajklNajt
Člen | 470
+
0
-

prog1 napsal(a):

Smazal jsem cache a vyhazuje mě to chybu:

ERROR: Return value of Nette\DI\Config\Adapters\PhpAdapter::load() must be of the type array, int returned
Check log to see more info.

odhliadnuc od toho, že si založil tretie vlákno, čo tak riadiť sa trošku svojou hlavou a spraviť to, čo ti radí tá chybová správa? Check log to see more info

Editoval MajklNajt (30. 1. 2022 17:40)

prog1
Člen | 45
+
0
-

Jan Tvrdík napsal(a):

Vypadá to dobře, takže bych zkusil smazat temp.

Jan Tvrdík Smazal jsem celou cache kromě jednoho Containeru ve složce nette.configurator, jinak skript končil výše uvedenou chybou (ERROR: …) i při napsání pouze příkazu php bin/console. Migrace stále nejdou spustit, příkaz php bin console migrations:create stále končí se zprávou There are no commands defined in the "migrations" namespace. Kde bych ještě mohl mít chybu?

Editoval prog1 (1. 2. 2022 3:16)

prog1
Člen | 45
+
0
-

Ahoj,
smazal jsem vše v cache a dostanu tuto chybu: ERROR: Multiple services of type Nette\Routing\Router found: 01, routerFactory
V common.neon mám:

extensions:
	dbal: Nextras\Dbal\Bridges\NetteDI\DbalExtension
	orm: Nextras\Orm\Bridges\NetteDI\OrmExtension
	migrations: Nextras\Migrations\Bridges\NetteDI\MigrationsExtension
	resources: Contributte\DI\Extension\ResourceExtension
	console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)

orm:
	model: Nextras\Orm\Model\Model
	repositoryFinder: Nextras\Orm\Bridges\NetteDI\DIRepositoryFinder


console:
	url: https://contributte.org

migrations:
    dir: %appDir%/../migrations # migrations base directory
    driver: mysql               # pgsql or mysql
    dbal: nextras               # nextras, nette, doctrine or dibi
    withDummyData: %debugMode%

services:
	routerFactory: App\Router\RouterFactory::createRouter

Co mám špatně_

Petr Parolek
Člen | 455
+
-1
-

Ahoj,

console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)

musí být první.

prog1
Člen | 45
+
0
-

Petr Parolek napsal(a):

Ahoj,

console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)

musí být první.

Dal jsem to jako první extensions, ale nic se nezměnilo.

Hando
Člen | 9
+
+1
-

No, ale tohle evidentně nemá nic společného s ORM, ani s konzolí – tohle je chyba v definování routeru.
Takový tip – nemáš víc konfiguračních souborů, kde bys tu službu definoval? Common.neon + local.neon atp.?

prog1
Člen | 45
+
-1
-

Hando napsal(a):

No, ale tohle evidentně nemá nic společného s ORM, ani s konzolí – tohle je chyba v definování routeru.
Takový tip – nemáš víc konfiguračních souborů, kde bys tu službu definoval? Common.neon + local.neon atp.?

Měl jsi pravdu, měl jsem tam ještě jeden. Teď ale mám tuto chybu:

ERROR: Service 'application.4' (type of KdybyModule\CliPresenter): Service of type Kdyby\Console\Application required by $console in CliPresenter::inj
ectConsole() not found. Did you add it to configuration file?
Jan Tvrdík
Nette guru | 2595
+
0
-

Odinstaluj kdyby/console

prog1
Člen | 45
+
0
-

kdyby/console jsem odinstaloval a mám toto:

Console Tool

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug


In MysqliDriver.php line 449:

  Unknown or incorrect time zone: 'Europe/Prague'


list [--raw] [--format FORMAT] [--] [<namespace>]


Přitom v common.neon mám

parameters:
    checkGenericClassInNonGenericObjectType: false

php:
	date.timezone: Europe/Prague

application:
	errorPresenter: Error
	mapping:
		*: App\*Module\Presenters\*Presenter
...
...

Co tam mám špatně?

prog1
Člen | 45
+
0
-

@JanTvrdík Díky, a ten soubor timezone_2021e_leaps_sql mám zkopírovat kam? Omlouvám se za možná blbý dotaz.

Editoval prog1 (7. 2. 2022 14:50)

Petr Parolek
Člen | 455
+
0
-

@prog1 záleží, pod jakym OS běží MySQL server…

prog1
Člen | 45
+
0
-

@PetrParolek Windows 7, xampp.
Edit: už jsem to vyřešil.

Editoval prog1 (7. 2. 2022 18:01)

prog1
Člen | 45
+
0
-

Ahoj,
co zde mám zadat za parametry?

php bin/console migrations:create

  Not enough arguments (missing: "type, label").

migrations:create [--empty] [--diff] [--stdin] [--] <type> <label>
nightfish
Člen | 468
+
0
-

@prog1
type je jedna z hodnot structures, basic-data, dummy-data – jejich význam je popsán v dokumentaci
label je část názvu souboru migrace, která se připojí za mezi datum, čas a příponu (ve výše odkázané dokumentaci jsou to ty části users a languages)

prog1
Člen | 45
+
0
-

Proč mám migrační soubory prázdné, kde může být příčina?

stepos2
Člen | 51
+
+1
-

To je očekávaný stav, migrační soubory si ve výchozím nastavení píšeš sám ručně.

Pro automatické generování je možný použít Nextras\Migrations\Bridges\DoctrineOrm\StructureDiffGenerator, pokud používáš Doctrinu, nebo si napsat vlastní implementaci Nextras\Migrations\IDiffGenerator.

prog1
Člen | 45
+
0
-

Používám Nextras.
Nextras\Migrations\Bridges\DoctrineOrm\StructureDiffGenerator tam mám.
Tedy v Nextras nejdou migrace generovat automaticky jako v Doctrine?

Editoval prog1 (10. 2. 2022 18:12)