Version ie <v5.10.30>
5.11.33
Environment <Docker/Shared Hosting/Zip/Other>
Docker (TrueNAS Scale App Catalog)
Checklist
- Can you replicate the issue on our v5 demo site https://demo.invoiceninja.com or Invoice Ninja?
- Have you searched existing issues?
- Have you inspected the logs in storage/logs/laravel.log for any errors?
Describe the bug
Migration from v4 fails, either creating an empty company when triggered from the v4 interface, or doing nothing when triggered with php artisan ninja:import --email=<MYEMAIL>
.
Steps To Reproduce
- Find an old v4 Invoice Ninja Install with a bit of data in it (my migration.json is 716 KB)
- Update it as far as you can
- Set up a new v5 install in TrueNAS Scale
- Attempt to run the migration
- Observe an empty company appear in v5
Expected Behavior
Import completes successfully without issue.
Additional context
I’ve been trying to migrate my old v4 install to v5 for the past 3 days. I haven’t used it in quite a while, so it was very out of date, to the point that I couldn’t get it to run anymore on my Digital Ocean droplet. I spent some time figuring out how to get it up and running in a local Docker instance, and was able to get updated to alpine-4.5.35
, but going any further was leading to PHP errors due to version mismatches, and attempting to fix these things on my own was going nowhere, so I’m stuck on 4.5.35.
When I run the migration process in v4, it does generate an export file, but on the v5 side, the import just creates a blank company and never finishes. I’ve also tried using php artisan ninja:import --email=<MYEMAIL>
but while it says “Started processing: OmT9LMTZjoTTigFI3GH5qpOLnfcTAEp8-2025-02-02-invoiceninja.zip at 2025-02-02 16:55:00” (after I manually copied over the file), it doesn’t actually seem to get anywhere, never generating anything in the dashboard, with no errors output.
So at this point I’ve got my migration.json
, and a clean install of v5, but no way to get the data in to v5. Any help would be greatly appreciated, I’m quite tired of fighting with this.
Screenshots
N / A
Logs
I don’t really see anything that appears very relevant, but here’s what I’ve got:
Laravel:
[2025-02-02 16:42:46] laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): Log [deprecations] is not defined. at /app/vendor/laravel/framework/src/Illuminate/Log/LogManager.php:232)
[stacktrace]
#0 /app/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(139): Illuminate\\Log\\LogManager->resolve()
#1 /app/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(126): Illuminate\\Log\\LogManager->get()
#2 /app/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(115): Illuminate\\Log\\LogManager->driver()
#3 /app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(109): Illuminate\\Log\\LogManager->channel()
#4 /app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(78): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleDeprecationError()
#5 /app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(290): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
#6 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}()
#7 /app/app/Utils/Traits/SettingsSaver.php(62): strlen()
#8 /app/app/Http/ValidationRules/ValidSettingsRule.php(33): App\\Http\\ValidationRules\\ValidSettingsRule->validateSettings()
#9 /app/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(885): App\\Http\\ValidationRules\\ValidSettingsRule->passes()
#10 /app/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(674): Illuminate\\Validation\\Validator->validateUsingCustomRule()
#11 /app/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(477): Illuminate\\Validation\\Validator->validateAttribute()
#12 /app/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(512): Illuminate\\Validation\\Validator->passes()
#13 /app/vendor/laravel/framework/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php(31): Illuminate\\Validation\\Validator->fails()
#14 /app/vendor/laravel/framework/src/Illuminate/Foundation/Providers/FormRequestServiceProvider.php(30): Illuminate\\Foundation\\Http\\FormRequest->validateResolved()
#15 /app/vendor/laravel/framework/src/Illuminate/Container/Container.php(1417): Illuminate\\Foundation\\Providers\\FormRequestServiceProvider->Illuminate\\Foundation\\Providers\\{closure}()
#16 /app/vendor/laravel/framework/src/Illuminate/Container/Container.php(1353): Illuminate\\Container\\Container->fireCallbackArray()
#17 /app/vendor/laravel/framework/src/Illuminate/Container/Container.php(1339): Illuminate\\Container\\Container->fireAfterResolvingCallbacks()
#18 /app/vendor/laravel/framework/src/Illuminate/Container/Container.php(837): Illuminate\\Container\\Container->fireResolvingCallbacks()
#19 /app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1051): Illuminate\\Container\\Container->resolve()
#20 /app/vendor/laravel/framework/src/Illuminate/Container/Container.php(755): Illuminate\\Foundation\\Application->resolve()
#21 /app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1033): Illuminate\\Container\\Container->make()
#22 /app/vendor/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php(92): Illuminate\\Foundation\\Application->make()
#23 /app/vendor/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php(51): Illuminate\\Routing\\ControllerDispatcher->transformDependency()
#24 /app/vendor/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php(30): Illuminate\\Routing\\ControllerDispatcher->resolveMethodDependencies()
#25 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(60): Illuminate\\Routing\\ControllerDispatcher->resolveClassMethodDependencies()
#26 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(41): Illuminate\\Routing\\ControllerDispatcher->resolveParameters()
#27 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Routing/TracingControllerDispatcherTracing.php(21): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#28 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Routing/TracingRoutingDispatcher.php(18): Sentry\\Laravel\\Tracing\\Routing\\TracingControllerDispatcherTracing->Sentry\\Laravel\\Tracing\\Routing\\{closure}()
#29 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Routing/TracingControllerDispatcherTracing.php(20): Sentry\\Laravel\\Tracing\\Routing\\TracingRoutingDispatcher->wrapRouteDispatch()
#30 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Sentry\\Laravel\\Tracing\\Routing\\TracingControllerDispatcherTracing->dispatch()
#31 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController()
#32 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
#33 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#34 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(124): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(89): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequestUsingNamedLimiter()
#36 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#37 /app/app/Http/Middleware/QueryLogging.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#38 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\QueryLogging->handle()
#39 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#41 /app/app/Http/Middleware/Locale.php(94): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#42 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\Locale->handle()
#43 /app/app/Http/Middleware/TokenAuth.php(102): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#44 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\TokenAuth->handle()
#45 /app/app/Http/Middleware/SetDb.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\SetDb->handle()
#47 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#48 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then()
#49 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack()
#50 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute()
#51 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute()
#52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch()
#53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#54 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/FlushEventsMiddleware.php(13): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Sentry\\Laravel\\Http\\FlushEventsMiddleware->handle()
#56 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestIpMiddleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Sentry\\Laravel\\Http\\SetRequestIpMiddleware->handle()
#58 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestMiddleware.php(31): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Sentry\\Laravel\\Http\\SetRequestMiddleware->handle()
#60 /app/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#61 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle()
#62 /app/app/Http/Middleware/Cors.php(24): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#63 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): App\\Http\\Middleware\\Cors->handle()
#64 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#65 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#66 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#67 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#68 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#69 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#70 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#71 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#72 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#73 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle()
#74 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#75 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#76 /app/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Middleware.php(79): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#77 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Sentry\\Laravel\\Tracing\\Middleware->handle()
#78 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#79 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then()
#80 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#81 /app/vendor/laravel/octane/src/ApplicationGateway.php(36): Illuminate\\Foundation\\Http\\Kernel->handle()
#82 /app/vendor/laravel/octane/src/Worker.php(84): Laravel\\Octane\\ApplicationGateway->handle()
#83 /app/vendor/laravel/octane/bin/frankenphp-worker.php(53): Laravel\\Octane\\Worker->handle()
#84 [internal function]: {closure}()
#85 /app/vendor/laravel/octane/bin/frankenphp-worker.php(74): frankenphp_handle_request()
#86 /app/public/frankenphp-worker.php(7): require('...')
#87 {main}
"}
Otherwise in my TrueNAS logs for Invoice Ninja, I do see this…
2025-02-02 16:42:00.972725+00:00{"level":"error","ts":1738514520.9674313,"msg":"write error","error":"write tcp 172.16.5.4:31105->192.168.86.46:49419: write: broken pipe"}
Could that be anything?