2017-01-24 6 views
3

私はdoctrineエンティティにいくつか変更を加え、データベースを更新する必要があり、次のエラーが発生しました。

私は「fleetNo」と呼ばれる列ではなく、「fuelData」テーブル「fleet_no」と呼ばれるものを持っているので、のような正しい
$ php bin/console doctrine:schema:update -vvv 


    [Doctrine\DBAL\Schema\SchemaException (30)]     
    There is no column with name 'fleet_no' on table 'fuelData'. 


Exception trace: 
() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php:86 
Doctrine\DBAL\Schema\SchemaException::columnDoesNotExist() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Table.php:671 
Doctrine\DBAL\Schema\Table->getColumn() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php:711 
Doctrine\DBAL\Platforms\MySqlPlatform->getPreAlterTableAlterPrimaryKeySQL() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php:639 
Doctrine\DBAL\Platforms\MySqlPlatform->getPreAlterTableIndexForeignKeySQL() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php:621 
Doctrine\DBAL\Platforms\MySqlPlatform->getAlterTableSQL() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php:199 
Doctrine\DBAL\Schema\SchemaDiff->_toSql() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php:126 
Doctrine\DBAL\Schema\SchemaDiff->toSaveSql() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/SchemaTool.php:883 
Doctrine\ORM\Tools\SchemaTool->getUpdateSchemaSql() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/UpdateCommand.php:115 
Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand->executeSchemaCommand() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:65 
Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() at /home/sarah/workspace/telematics_tracker/vendor/doctrine/doctrine-bundle/Command/Proxy/UpdateSchemaDoctrineCommand.php:50 
Doctrine\Bundle\DoctrineBundle\Command\Proxy\UpdateSchemaDoctrineCommand->execute() at /home/sarah/workspace/telematics_tracker/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:261 
Symfony\Component\Console\Command\Command->run() at /home/sarah/workspace/telematics_tracker/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:839 
Symfony\Component\Console\Application->doRunCommand() at /home/sarah/workspace/telematics_tracker/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:185 
Symfony\Component\Console\Application->doRun() at /home/sarah/workspace/telematics_tracker/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:80 
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/sarah/workspace/telematics_tracker/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:116 
Symfony\Component\Console\Application->run() at /home/sarah/workspace/telematics_tracker/bin/console:27 

。これは私が行った変更の一つでもありませんでした。 プロジェクトディレクトリに「fleet_no」の他のインスタンスが検索されましたが、存在しません。

以下は、fuelDataエンティティのコピーです。

<?php 
// src/AppBundle/Entity/FuelData.php 
namespace AppBundle\Entity; 

use Symfony\Component\Validator\Constraints as Assert; 
use Doctrine\ORM\Mapping as ORM; 
use Doctrine\ORM\Mapping\Column; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fuelData") 
* 
* 
*/ 

class FuelData 
{ 

/** 
* @Assert\NotBlank() 
* @ORM\Column(type="string") 
* @ORM\Id 
*/ 
public $fleetNo; 

/** 
* @Assert\NotBlank() 
* @ORM\Column(type="string") 
*/ 
public $startDate; 

/** 
* @Assert\NotBlank() 
* @ORM\Column(type="string") 
*/ 
public $endDate; 

/** 
* Set fleetNo 
* 
* @param string $fleetNo 
* 
* @return FuelData 
*/ 
public function setFleetNo($fleetNo) 
{ 
    $this->fleetNo = $fleetNo; 

    return $this; 
} 

/** 
* Get fleetNo 
* 
* @return string 
*/ 
public function getFleetNo() 
{ 
    return $this->fleetNo; 
} 

/** 
* Set startDate 
* 
* @param string $startDate 
* 
* @return FuelData 
*/ 
public function setStartDate($startDate) 
{ 
    $this->startDate = $startDate; 

    return $this; 
} 

/** 
* Get startDate 
* 
* @return string 
*/ 
public function getStartDate() 
{ 
    return $this->startDate; 
} 

/** 
* Set endDate 
* 
* @param string $endDate 
* 
* @return FuelData 
*/ 
public function setEndDate($endDate) 
{ 
    $this->endDate = $endDate; 

    return $this; 
} 

/** 
* Get endDate 
* 
* @return string 
*/ 
public function getEndDate() 
{ 
    return $this->endDate; 
} 
} 

私は考えることができる唯一のことは、列名が何かによってアンダースコアにキャメルケースから変換されていることです。

私は見逃したことがあるか、別の場所で探しているべきことがありますか?

以下

は私のconfig.ymlの関連部分です:それはあなたのフィールド名が変換するものであるので、あなたの設定にあなたはORMのためにアンダースコア命名戦略を使用している見ることができるように

doctrine: 
    dbal: 
     default_connection: maxdb 
     connections: 
      maxdb: 
       driver: pdo_mysql 
       host:  "%database_host%" 
       port:  "%database_port%" 
       dbname: "%database_name%" 
       user:  "%database_user%" 
       password: "%database_password%" 
       charset: UTF8 
      foxdb: 
       driver: pdo_mysql 
       host:  "%database_host2%" 
       port:  "%database_port2%" 
       dbname: "%database_name2%" 
       user:  "%database_user2%" 
       password: "%database_password2%" 
       charset: UTF8 
    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     default_entity_manager: maxem 
     entity_managers: 
      maxem: 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
       connection: maxdb 
       mappings: 
        AppBundle: ~ 
        BWTCalendarBundle: ~ 
        BWTFMBundle: ~ 
        BWTHealthCheckBundle: ~ 
        BWTSkytrackBundle: ~ 
        BWTTelematicsBundle: ~ 
      foxem: 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
       connection: foxdb 
       mappings: 
        FoxBundle: ~ 
+0

:最後に

はあなたがちょうどそうのようなcolum注釈にnameパラメータを追加する正確な列名を持っていることを確認したい場合は? –

+0

'app/config/config.yml'のDoctrine関連の部分を投稿してください。 'app/console cache:clear'と' app/console doctrine:cache:clear-metadata'を試しましたか? – lxg

+0

@vaibhavraychura艦隊の主要なキーはありませんでした。 –

答えて

4
orm: 
    auto_generate_proxy_classes: "%kernel.debug%" 
    default_entity_manager: maxem 
    entity_managers: 
     maxem: 
      naming_strategy: doctrine.orm.naming_strategy.underscore 

あなたは命名戦略を変更してみてください、その後、クリーンから始めるために

app/console doctrine:schema:drop

を行う必要があります。このテーブルの主キーです

/** 
* @Assert\NotBlank() 
* @ORM\Column(type="string" name="fleetNo") 
* @ORM\Id 
*/ 
public $fleetNo; 
+1

あなたと@Sebに感謝します。 naming_strategy:キーを削除しました。これは必須ではないので、ここで説明するように、doctrineは単純なクラス名と属性名を使用してテーブルとカラムを生成できます(http://docs.doctrine-project.org/ projects/doctrine-orm/en/latest/reference/namingstrategy.html)それは今うまくいきます –

+0

うれしいプログラミングです! – Mawcel

関連する問題