Project

General

Profile

Actions

Bug #87008

closed

Doctrine/DBAL exception in Extension Manager when extension is installed - PostgreSQL/PostGIS database

Added by Giovanni Romero Pérez almost 6 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
Extension Manager
Target version:
-
Start date:
2018-11-26
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
8
PHP Version:
7.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

I am using TYPO3 8.7 on a PostgreSQL/PostGIS database and having a geometry column on a table non-registered in TCA. When I try to install any extension, the following exception is thrown:

Uncaught TYPO3 Exception
Unknown database type geometry requested, Doctrine\DBAL\Platforms\PostgreSQL92Platform may not support it.

Doctrine\DBAL\DBALException thrown in file
/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php in line 423.

28 Doctrine\DBAL\Platforms\AbstractPlatform::getDoctrineTypeMapping("geometry")

/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php:

00347:         }
00348: 

00349:         $type = $this->_platform->getDoctrineTypeMapping($dbType);

00350:         $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
00351:         $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);

27 Doctrine\DBAL\Schema\PostgreSqlSchemaManager::_getPortableTableColumnDefinition(array)

/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:

00818: 
00819:             if ( ! $defaultPrevented) {

00820:                 $column = $this->_getPortableTableColumnDefinition($tableColumn);

00821:             }
00822: 

26 Doctrine\DBAL\Schema\AbstractSchemaManager::_getPortableTableColumnList("tx_myext_domain_model_geotable", "mydatabase", array)

/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:

00173:         $tableColumns = $this->_conn->fetchAll($sql);
00174: 

00175:         return $this->_getPortableTableColumnList($table, $database, $tableColumns);

00176:     }
00177: 

25 Doctrine\DBAL\Schema\AbstractSchemaManager::listTableColumns("tx_myext_domain_model_geotable")

/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:

00279:     public function listTableDetails($tableName)
00280:     {

00281:         $columns = $this->listTableColumns($tableName);

00282:         $foreignKeys = array();
00283:         if ($this->_platform->supportsForeignKeyConstraints()) {

24 Doctrine\DBAL\Schema\AbstractSchemaManager::listTableDetails("tx_myext_domain_model_geotable")

/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:

00266:         $tables = array();
00267:         foreach ($tableNames as $tableName) {

00268:             $tables[] = $this->listTableDetails($tableName);

00269:         }
00270: 

23 Doctrine\DBAL\Schema\AbstractSchemaManager::listTables()

/var/www/html/myinstallation/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php:

01038:         }
01039: 

01040:         $tables = $this->listTables();

01041: 
01042:         return new Schema($tables, $sequences, $this->createSchemaConfig(), $namespaces);

22 Doctrine\DBAL\Schema\AbstractSchemaManager::createSchema()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/core/Classes/Database/Schema/ConnectionMigrator.php:

00210:     {
00211:         // Build the schema definitions

00212:         $fromSchema = $this->connection->getSchemaManager()->createSchema();

00213:         $toSchema = $this->buildExpectedSchemaDefinitions($this->connectionName);
00214: 

21 TYPO3\CMS\Core\Database\Schema\ConnectionMigrator::buildSchemaDiff()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/core/Classes/Database/Schema/ConnectionMigrator.php:

00105:     public function getUpdateSuggestions(bool $remove = false): array
00106:     {

00107:         $schemaDiff = $this->buildSchemaDiff();

00108: 
00109:         if ($remove === false) {

20 TYPO3\CMS\Core\Database\Schema\ConnectionMigrator::getUpdateSuggestions(boolean)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/core/Classes/Database/Schema/SchemaMigrator.php:

00068: 
00069:             $updateSuggestions[$connectionName] =

00070:                 $connectionMigrator->getUpdateSuggestions($remove);

00071:         }
00072: 

19 TYPO3\CMS\Core\Database\Schema\SchemaMigrator::getUpdateSuggestions(array)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php:

00470:         }
00471:         $sqlStatements = $sqlReader->getCreateTableStatementArray(implode(LF . LF, array_filter($sqlStatements)));

00472:         $updateStatements = $schemaMigrator->getUpdateSuggestions($sqlStatements);

00473: 
00474:         $updateStatements = array_merge_recursive(...array_values($updateStatements));

18 TYPO3\CMS\Extensionmanager\Utility\InstallUtility::updateDatabase(array)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php:

00196:         }
00197:         $this->reloadCaches();

00198:         $this->updateDatabase($extensionKeys);

00199: 
00200:         foreach ($extensionKeys as $extensionKey) {

17 TYPO3\CMS\Extensionmanager\Utility\InstallUtility::install("unal_myext")

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extensionmanager/Classes/Service/ExtensionManagementService.php:

00363:         $this->emitWillInstallExtensionsSignal($installQueue);
00364:         $resolvedDependencies = [];

00365:         $this->installUtility->install(...array_keys($installQueue));

00366:         foreach ($installQueue as $extensionKey => $_) {
00367:             $this->emitHasInstalledExtensionSignal($extensionKey);

16 TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::installDependencies(array)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extensionmanager/Classes/Service/ExtensionManagementService.php:

00225:         $installedDependencies = [];
00226:         if ($this->automaticInstallationEnabled) {

00227:             $installedDependencies = $this->installDependencies($installQueue);

00228:         }
00229: 

15 TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::installExtension(TYPO3\CMS\Extensionmanager\Domain\Model\Extension)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php:

00093:                     $this->installUtility->enrichExtensionWithDetails($extensionKey, false)
00094:                 );

00095:                 if ($this->managementService->installExtension($extension) === false) {

00096:                     $this->redirect('unresolvedDependencies', 'List', null, ['extensionKey' => $extensionKey]);
00097:                 }

14 TYPO3\CMS\Extensionmanager\Controller\ActionController::toggleExtensionInstallationStateAction("unal_myext")

13 call_user_func_array(array, array)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php:

00314:         if (!$validationResult->hasErrors()) {
00315:             $this->emitBeforeCallActionMethodSignal($preparedArguments);

00316:             $actionResult = call_user_func_array([$this, $this->actionMethodName], $preparedArguments);

00317:         } else {
00318:             $methodTagsValues = $this->reflectionService->getMethodTagsValues(get_class($this), $this->actionMethodName);

12 TYPO3\CMS\Extbase\Mvc\Controller\ActionController::callActionMethod()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php:

00174:             $this->initializeView($this->view);
00175:         }

00176:         $this->callActionMethod();

00177:         $this->renderAssetsForRequest($request);
00178:     }

11 TYPO3\CMS\Extbase\Mvc\Controller\ActionController::processRequest(TYPO3\CMS\Extbase\Mvc\Web\Request, TYPO3\CMS\Extbase\Mvc\Web\Response)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extbase/Classes/Mvc/Dispatcher.php:

00083:             $controller = $this->resolveController($request);
00084:             try {

00085:                 $controller->processRequest($request, $response);

00086:             } catch (\TYPO3\CMS\Extbase\Mvc\Exception\StopActionException $ignoredException) {
00087:             }

10 TYPO3\CMS\Extbase\Mvc\Dispatcher::dispatch(TYPO3\CMS\Extbase\Mvc\Web\Request, TYPO3\CMS\Extbase\Mvc\Web\Response)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extbase/Classes/Mvc/Web/BackendRequestHandler.php:

00030:         /** @var $response \TYPO3\CMS\Extbase\Mvc\ResponseInterface */
00031:         $response = $this->objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Response::class);

00032:         $this->dispatcher->dispatch($request, $response);

00033:         return $response;
00034:     }

9 TYPO3\CMS\Extbase\Mvc\Web\BackendRequestHandler::handleRequest()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extbase/Classes/Core/Bootstrap.php:

00197:         $requestHandler = $requestHandlerResolver->resolveRequestHandler();
00198: 

00199:         $response = $requestHandler->handleRequest();

00200:         // If response is NULL after handling the request we need to stop
00201:         // This happens for instance, when a USER object was converted to a USER_INT

8 TYPO3\CMS\Extbase\Core\Bootstrap::handleRequest()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/extbase/Classes/Core/Bootstrap.php:

00184:     {
00185:         $this->initialize($configuration);

00186:         return $this->handleRequest();

00187:     }
00188: 

7 TYPO3\CMS\Extbase\Core\Bootstrap::run("", array)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php:

00180:             // Run Extbase
00181:             $bootstrap = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Core\Bootstrap::class);

00182:             $content = $bootstrap->run('', $configuration);

00183: 
00184:             $response->getBody()->write($content);

6 TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::dispatchModule("tools_ExtensionmanagerExtensionmanager")

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php:

00087: 
00088:         $moduleName = (string)$this->request->getQueryParams()['M'];

00089:         return $this->dispatchModule($moduleName);

00090:     }
00091: 

5 TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::handleRequest(TYPO3\CMS\Core\Http\ServerRequest)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/core/Classes/Core/Bootstrap.php:

00317: 
00318:         // Execute the command which returns a Response object or NULL

00319:         $this->response = $requestHandler->handleRequest($request);

00320:         return $this;
00321:     }

4 TYPO3\CMS\Core\Core\Bootstrap::handleRequest(TYPO3\CMS\Core\Http\ServerRequest)

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/backend/Classes/Http/Application.php:

00090:         }
00091: 

00092:         $this->bootstrap->handleRequest($this->request);

00093: 
00094:         if ($execute !== null) {

3 TYPO3\CMS\Backend\Http\Application::run()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/backend/Resources/Private/Php/backend.php:

00022:     $classLoader = require __DIR__ . '/../../../../../../vendor/autoload.php';
00023: 

00024:     (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();

00025: });

2 {closure}()

/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/backend/Resources/Private/Php/backend.php:

00023: 
00024:     (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();

00025: });

1 require("/var/www/html/myinstallation/vendor/typo3/cms/typo3/sysext/backend/Resources/Private/Php/backend.php")

/var/www/html/myinstallation/vendor/typo3/cms/typo3/index.php:

00001: <?php
00002: 

00003: require __DIR__ . '/sysext/backend/Resources/Private/Php/backend.php';

If I drop my geometry column, Extension Manager works OK; however, I need it.

Thank you in advance.


Related issues 1 (0 open1 closed)

Is duplicate of TYPO3 Core - Bug #83779: Doctrine Exception prevents to enable ExtensionsClosed2018-02-05

Actions
Actions

Also available in: Atom PDF