Примечание доктрины Symfony 3.4.11: Смещение неинициализированной строки: 0 - PullRequest
0 голосов
/ 12 июня 2018

Я использую Symfony и обновляюсь до 3.4.11.

Но у меня большая проблема.Когда я запускаю команду:

php bin/console doctrine:schema:update  --dump-sql

в терминале, у меня появляется следующая ошибка:

In ClassMetadataInfo.php line 1400:

  Notice: Uninitialized string offset: 0  

Действительно, я искал и читал документы, и я не могу найти ошибку,

Большое спасибо

ОБНОВЛЕНИЕ

$ php bin/console doc:sch:va  -vvv

Mapping
-------


In ClassMetadataInfo.php line 1400:

  [Symfony\Component\Debug\Exception\ContextErrorException]  
  Notice: Uninitialized string offset: 0                     


Exception trace:
 Doctrine\ORM\Mapping\ClassMetadataInfo->_validateAndCompleteFieldMapping() at /home/devel/tests4/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php:2355

 Doctrine\ORM\Mapping\ClassMetadataInfo->mapField() at /home/devel/tests4/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php:333

 Doctrine\ORM\Mapping\Driver\AnnotationDriver->loadMetadataForClass() at /home/devel/tests4/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php:102

 Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain->loadMetadataForClass() at /home/devel/tests4/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:151

 Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata() at /home/devel/tests4/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:333

 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() at /home/devel/tests4/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:78

 Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() at /home/devel/tests4/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:217

 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() at /home/devel/tests4/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:115

 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() at /home/devel/tests4/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/SchemaValidator.php:68

 Doctrine\ORM\Tools\SchemaValidator->validateMapping() at /home/devel/tests4/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/Command/ValidateSchemaCommand.php:69

 Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand->execute() at /home/devel/tests4/vendor/doctrine/doctrine-bundle/Command/Proxy/ValidateSchemaCommand.php:34

 Doctrine\Bundle\DoctrineBundle\Command\Proxy\ValidateSchemaCommand->execute() at /home/devel/tests4/vendor/symfony/console/Command/Command.php:251

 Symfony\Component\Console\Command\Command->run() at /home/devel/tests4/vendor/symfony/console/Application.php:964

 Symfony\Component\Console\Application->doRunCommand() at /home/devel/tests4/vendor/symfony/framework-bundle/Console/Application.php:86

 Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /home/devel/tests4/vendor/symfony/console/Application.php:248

 Symfony\Component\Console\Application->doRun() at /home/devel/tests4/vendor/symfony/framework-bundle/Console/Application.php:74

 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/devel/tests4/vendor/symfony/console/Application.php:148

 Symfony\Component\Console\Application->run() at /home/devel/tests4/bin/console:39

Ответы [ 3 ]

0 голосов
/ 05 апреля 2019

Это первое попадание Google для моей аналогичной проблемы:

bin/console doctrine:migrations:diff

In MySqlSchemaManager.php line 243:

  Notice: Uninitialized string offset: 0  

Когда я проверил код на других машинах, он работал, но на этой конкретной машине произошел вышеуказанный сбой.Моей проблемой было какое-то взаимодействие с MariaDB.Когда я обновился с:

mysql --version
mysql  Ver 15.1 Distrib 10.1.34-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

До:

mysql --version
mysql  Ver 15.1 Distrib 10.3.11-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Проблема исчезла.

Обновление до 10.1.38-MariaDB не помогло.

0 голосов
/ 28 мая 2019

Я также испытал «Смещение неинициализированной строки: 0» с доктриной из консоли Symfony.

In MySqlSchemaManager.php line 223:
    Notice: Uninitialized string offset: 0  

В моем случае это было несоответствие версии MariaDB между конфигурацией доктрины и (локальной) версией сервера.Я увидел предложение @Samuel Åslund об обновлении MariaDB и обнаружил, что это несколько излишне, но оно действительно указало мне на проблему с версией базы данных.

In doctrine.yaml (Symfony 4+)

 doctrine:
    dbal:
        server_version: 'mariadb-10.1.36'

После установки через symfony-console было предварительно настроено:

 doctrine:
    dbal:
        server_version: 'mariadb-10.3.11'
0 голосов
/ 12 июня 2018

Спасибо всем за попытку помочь мне.

Я исправил свою ошибку и нашел правильный ответ здесь: https://plus.google.com/+KamilZabdyr/posts/fb5xYGyyyY8

Здесь быстрое исправление очень распространенной ошибки в ORM:

Примечание PHP: Смещение неинициализированной строки: 0 в?имя тега пусто.Поэтому проверьте все файлы вашей модели на наличие пустых названий.Например:

@ ORM \ Column (имя = "", тип = "строка", длина = 12)

...