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

Latest update throws error #2561

Closed
makitso opened this issue Aug 28, 2019 · 11 comments
Closed

Latest update throws error #2561

makitso opened this issue Aug 28, 2019 · 11 comments

Comments

@makitso
Copy link
Collaborator

makitso commented Aug 28, 2019

Log in, switch to Control Panel throws this error. Reverting changes made to ServerCheckServices.php made yesterday fixed the problem.

Undefined property: stdClass::$TABLE_NAME …/app/Services/ServerCheckService.php:366
#0 …/app/Services/ServerCheckService.php(366): Fisharebest\Webtrees\Webtrees::Fisharebest\Webtrees{closure}(8, 'Undefined prope...', '/var/www/html/s...', 366, Array)
#1 [internal function]: Fisharebest\Webtrees\Services\ServerCheckService::Fisharebest\Webtrees\Services{closure}(Object(stdClass), 0)
#2 …/vendor/illuminate/support/Collection.php(1120): array_map(Object(Closure), Array, Array)
#3 …/app/Services/ServerCheckService.php(367): Illuminate\Support\Collection->map(Object(Closure))
#4 …/app/Services/ServerCheckService.php(98): Fisharebest\Webtrees\Services\ServerCheckService->databaseEngineWarnings()
#5 …/app/Http/Controllers/Admin/ControlPanelController.php(84): Fisharebest\Webtrees\Services\ServerCheckService->serverWarnings()
#6 [internal function]: Fisharebest\Webtrees\Http\Controllers\Admin\ControlPanelController->controlPanel(Object(Fisharebest\Webtrees\Services\HousekeepingService), Object(Fisharebest\Webtrees\Services\UpgradeService), Object(Fisharebest\Webtrees\Services\ModuleService), Object(Fisharebest\Webtrees\Services\ServerCheckService), Object(Fisharebest\Webtrees\Services\UserService))
#7 …/app/Application.php(45): ReflectionMethod->invoke(Object(Fisharebest\Webtrees\Http\Controllers\Admin\ControlPanelController), Object(Fisharebest\Webtrees\Services\HousekeepingService), Object(Fisharebest\Webtrees\Services\UpgradeService), Object(Fisharebest\Webtrees\Services\ModuleService), Object(Fisharebest\Webtrees\Services\ServerCheckService), Object(Fisharebest\Webtrees\Services\UserService))
#8 …/app/Http/Middleware/RequestRouter.php(68): Fisharebest\Webtrees\Application->dispatch(Object(Fisharebest\Webtrees\Http\Controllers\Admin\ControlPanelController), 'controlPanel')
#9 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\RequestRouter->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#10 …/app/Http/Middleware/ModuleMiddleware.php(75): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#11 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\ModuleMiddleware->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#12 …/app/Http/Middleware/BootModules.php(58): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#13 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\BootModules->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#14 …/app/Http/Middleware/UseTransaction.php(44): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#15 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseTransaction->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#16 …/app/Http/Middleware/CheckCsrf.php(63): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#17 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\CheckCsrf->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#18 …/app/Http/Middleware/DoHousekeeping.php(76): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#19 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\DoHousekeeping->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#20 …/app/Http/Middleware/UseTheme.php(70): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#21 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseTheme->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#22 …/app/Http/Middleware/CheckForMaintenanceMode.php(49): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#23 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\CheckForMaintenanceMode->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#24 …/app/Http/Middleware/UseLocale.php(51): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#25 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseLocale->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#26 …/app/Http/Middleware/UseTree.php(59): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#27 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseTree->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#28 …/app/Http/Middleware/UseSession.php(58): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#29 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseSession->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#30 …/app/Http/Middleware/UseFilesystem.php(49): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#31 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseFilesystem->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#32 …/app/Http/Middleware/UseCache.php(44): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#33 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseCache->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#34 …/app/Http/Middleware/UpdateDatabaseSchema.php(56): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#35 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UpdateDatabaseSchema->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#36 …/app/Http/Middleware/UseDebugbar.php(64): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#37 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseDebugbar->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#38 …/app/Http/Middleware/UseDatabase.php(85): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#39 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\UseDatabase->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#40 …/app/Http/Middleware/WebEnvironment.php(78): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#41 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\WebEnvironment->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#42 …/app/Http/Middleware/ReadConfigIni.php(62): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#43 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\ReadConfigIni->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#44 …/app/Http/Middleware/HandleExceptions.php(54): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#45 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\HandleExceptions->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#46 …/app/Http/Middleware/EmitResponse.php(52): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#47 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\EmitResponse->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#48 …/app/Http/Middleware/PhpEnvironment.php(46): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#49 …/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\PhpEnvironment->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher))
#50 …/vendor/oscarotero/middleland/src/Dispatcher.php(118): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest))
#51 …/index.php(40): Middleland\Dispatcher->dispatch(Object(Nyholm\Psr7\ServerRequest))
#52 {main}

@fisharebest
Copy link
Owner

Can you take a look at $row and see what properties it has?

@makitso
Copy link
Collaborator Author

makitso commented Aug 29, 2019

How to do this?

@fisharebest
Copy link
Owner

Find the reference to $row->TABLE_NAME in this line.

https://github.com/fisharebest/webtrees/blob/master/app/Services/ServerCheckService.php#L366

Replace it with print_r($row->TABLE_NAME, true).

@makitso
Copy link
Collaborator Author

makitso commented Aug 29, 2019

Nothing printed except the same error as above:

$rows = $rows->map(static function (stdClass $row): string {
return 'ALTER TABLE ' . print_r($row->TABLE_NAME, true). ' ENGINE=InnoDB;';
});

@fisharebest
Copy link
Owner

My bad. Try:

print_r($row, true)

@makitso
Copy link
Collaborator Author

makitso commented Aug 29, 2019

The database uses non-transactional tables. You may get errors if more than one user updates data at the same time. To fix this, run the following SQL commands.
ALTER TABLE stdClass Object ( [table_name] => wt_session [engine] => MyISAM ) ENGINE=InnoDB;

@fisharebest
Copy link
Owner

OK - your version of MySQL must use lower case for its internal tables.

I'll update the code to expect both....

@makitso
Copy link
Collaborator Author

makitso commented Aug 29, 2019

I see that my Prod system has all tables with the engine of ENGINE=InnoDB except wt_session, ENGINE=MyISAM. I suspect that is the problem.

@makitso
Copy link
Collaborator Author

makitso commented Aug 29, 2019

I changed the engine of wt_session to InnoDB and the error went away.

@makitso makitso closed this as completed Aug 29, 2019
@makitso
Copy link
Collaborator Author

makitso commented Aug 29, 2019

DB Engine problem

@fisharebest
Copy link
Owner

I discovered recently that we are relying on database transactions for a few things, such as generating unique XREFs.

MyISAM does not support transactions.

So, this is a check for tables with non-transactional engines.

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

No branches or pull requests

2 participants