Nextras ORM – migrations z console
- prog1
- Člen | 45
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?
- MajklNajt
- Člen | 498
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
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
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
Ahoj,
console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)
musí být první.
- prog1
- Člen | 45
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?
- prog1
- Člen | 45
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ě?
- nightfish
- Člen | 518
@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
)
- stepos2
- Člen | 53
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
.