TYPO3 9,5 секунд базы данных - ошибки в ExtensionManager - PullRequest
0 голосов
/ 12 октября 2019

У меня проблема при добавлении сторонней базы данных Oracle в конфигурацию TYPO3 в TYPO3 9.5. После добавления конфигурации я не могу больше устанавливать какие-либо расширения (включая базовые расширения) в ExtensionManager.

В LocalConfiguration.php я добавляю вторую базу данных (это база данных системы управления патентами - без «стиля TYPO3»):

'DB' => [
  'Connections' => [
    'Default' => [
      ....
    ],
    'MyDB' => [
      'charset' => 'utf8',
      'dbname' => 'xxx',
      'driver' => 'oci8',
      'host' => 'xxx',
      'password' => 'xxx',
      'port' => '1521',
      'user' => 'xxx',
    ],
  ],
  'TableMapping' => [
    'SCHEMA.TABLE1' => 'MyDB'
  ],
  'extTablesDefinitionScript' => 'extTables.php',
],

Я использую QueryBuilder в действии в моем контроллере и могу без проблем запросить таблицу.

НО установка любое расширение в ExtensionManager приводит к следующей ошибке:

(1/1) TypeError
Argument 1 passed to TYPO3\CMS\Core\Database\Schema\EventListener\SchemaColumnDefinitionListener::getDatabaseType() must be of the type string, null given, called in C:\inetpub\typo3_src-9.5.7\typo3\sysext\core\Classes\Database\Schema\EventListener\SchemaColumnDefinitionListener.php on line 41
in C:\inetpub\typo3_src-9.5.7\typo3\sysext\core\Classes\Database\Schema\EventListener\SchemaColumnDefinitionListener.php line 93
*
* @param string $typeDefiniton
* @return string
*/
protected function getDatabaseType(string $typeDefiniton): string
{
$dbType = strtolower($typeDefiniton);
$dbType = strtok($dbType, '(), ');
at TYPO3\CMS\Core\Database\Schema\EventListener\SchemaColumnDefinitionListener->getDatabaseType(null)
in C:\inetpub\typo3_src-9.5.7\typo3\sysext\core\Classes\Database\Schema\EventListener\SchemaColumnDefinitionListener.php line 41
public function onSchemaColumnDefinition(SchemaColumnDefinitionEventArgs $event)
{
$tableColumn = $event->getTableColumn();
$tableColumn = array_change_key_case($tableColumn, CASE_LOWER);
$dbType = $this->getDatabaseType($tableColumn['type']);
if ($dbType !== 'enum' && $dbType !== 'set') {
return;
}
at TYPO3\CMS\Core\Database\Schema\EventListener\SchemaColumnDefinitionListener->onSchemaColumnDefinition(object(Doctrine\DBAL\Event\SchemaColumnDefinitionEventArgs))

Как только я удаляю вторую базу данных из LocalConfiguration.php, ExtensionManager снова работает - но, конечно, QueryBuilder больше не знает таблицу: enttäuscht:

...