2017-12-01 17 views
0

の更新に失敗しましたねえコミュニティ、のSymfony 2.6は、データベース

iはMSSQL-DatabaseでのSymfony 2とDoctrineに問題があります。 "php app/console doctrine:database:create"と "php app/console doctrine:schema:create"はすべて問題ありません。しかし、「PHPアプリ/コンソール教義:スキーマ:アップデート」にORMマッパーまたはエンティティの表示の変更せずに、次のエラー:私はテーブルから手動で制限を削除すると

[Doctrine\DBAL\DBALException] 
An exception occurred while executing 'ALTER TABLE product DROP CONSTRAINT DF_D34A04AD_A5D6E63E': 
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]DF_D34A04AD_A5D6E63E is not a restriction. 

を助けてください"DF__product__timesta__38996AB5" という名前の、その新しいError:

[Doctrine\DBAL\DBALException] 
An exception occurred while executing 'ALTER TABLE product ALTER COLUMN timestamp DATETIME DEFAULT CURRENT_TIMESTAMP': 
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near the DEFAULT keyword. 

を助けてくださいPHPのための

データベース

Microsoft SQL Server 2016 

パッケージ:

php70.x86_64      1.0-5.el7 
php70-php.x86_64     7.0.26-1.el7 
php70-php-cli.x86_64    7.0.26-1.el7 
php70-php-common.x86_64    7.0.26-1.el7 
php70-php-json.x86_64    7.0.26-1.el7 
php70-php-pdo.x86_64    7.0.26-1.el7 
php70-php-sqlsrv.x86_64    4.3.0-1.el7 
php70-php-xml.x86_64    7.0.26-1.el7 
php70-runtime.x86_64    1.0-5.el7 

parameters.yml

database_driver: sqlsrv 

のsrc/AppBundle /エンティティ/ Product.php 名前空間AppBundle \ Entity;

class Product 
{ 
    private $name; 
    private $price; 
    private $description; 
    private $timestamp; 
} 

のsrc/AppBundle /リソース/設定/ドクトリン/ Product.orm.yml

AppBundle\Entity\Product: 
    type: entity 
    table: product 
    id: 
     id: 
      type: integer 
      generator: { strategy: AUTO } 
    fields: 
     name: 
      type: string 
      length: 100 
     price: 
      type: decimal 
      scale: 2 
     description: 
      type: test 
     timestamp: 
      type: datetime 
      columnDefinition: DATETIME DEFAULT CURRENT_TIMESTAMP 
      nullable: false 

テーブルpanel.productの輸出構造

CREATE TABLE IF NOT EXISTS "product" (
"id" INT(10,0) NOT NULL, 
"name" NVARCHAR(100) NOT NULL, 
"price" NUMERIC(10,2) NOT NULL, 
"description" VARCHAR(max) NOT NULL, 
"timestamp" DATETIME(3) NULL DEFAULT (getdate()), 
PRIMARY KEY ("id") 
); 

作曲ショー-i

doctrine/annotations     v1.2.6 Docblock Annotations Parser 
doctrine/cache      v1.4.1 Caching library offering an object-oriented API for many cache backends 
doctrine/collections     v1.3.0 Collections Abstraction library 
doctrine/common      v2.5.0 Common Library for Doctrine projects 
doctrine/dbal      v2.4.4 Database Abstraction Layer 
doctrine/doctrine-bundle    v1.5.0 Symfony DoctrineBundle 
doctrine/doctrine-cache-bundle  v1.0.1 Symfony2 Bundle for Doctrine Cache 
doctrine/inflector     v1.0.1 Common String Manipulations with regard to casing and singular/plural rules. 
doctrine/lexer      v1.0.1 Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers. 
doctrine/orm       v2.4.7 Object-Relational-Mapper for PHP 
incenteev/composer-parameter-handler v2.1.1 Composer script handling your ignored parameter file 
jdorn/sql-formatter     v1.2.17 a PHP SQL highlighting library 
kriswallsmith/assetic    v1.2.1 Asset Management for PHP 
monolog/monolog      1.15.0 Sends your logs to files, sockets, inboxes, databases and various web services 
psr/log        1.0.0 Common interface for logging libraries 
sensio/distribution-bundle   v4.0.0 Base bundle for Symfony Distributions 
sensio/framework-extra-bundle  v3.0.9 This bundle provides a way to configure your controllers with annotations 
sensio/generator-bundle    v2.5.3 This bundle generates code for you 
sensiolabs/security-checker   v2.0.5 A security checker for your composer.lock 
swiftmailer/swiftmailer    v5.4.1 Swiftmailer, free feature-rich PHP mailer 
symfony/assetic-bundle    v2.6.1 Integrates Assetic into Symfony2 
symfony/monolog-bundle    v2.7.1 Symfony MonologBundle 
symfony/swiftmailer-bundle   v2.3.8 Symfony SwiftmailerBundle 
symfony/symfony      v2.6.11 The Symfony PHP framework 
twig/extensions      v1.2.0 Common additional features for Twig that do not directly belong in core 
twig/twig       v1.18.2 Twig, the flexible, fast, and secure template language for PHP 

答えて

0

これをカラムにデフォルトを追加するための有効な構文ではありません。

ALTER TABLE product ALTER COLUMN timestamp DATETIME DEFAULT 
CURRENT_TIMESTAMP 

あなたは

ALTER TABLE product ADD DEFAULT CURRENT_TIMESTAMP 
FOR [timestamp] 

を使用する必要がありますまたはあなたがあなたの制約の名前を使用することができます。

ALTER TABLE product ADD CONSTRAINT DF_TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
FOR [timestamp] 

最初に表示されるエラーは、exi以外のものをドロップしようとすると異常ですあなたが得なければならないスティッキング制約

'DF_D34A04AD_A5D6E63E' is not a constraint.

原因は間違った制約名を使用しているためです。生成されたテーブル名+フィールド名が使用されたときに自動的にデフォルト制約名が生成されたようには見えません。そのため、再度制約名を確認してください。

+0

ALTER TABLEプロダクトALTER COLUMNタイムスタンプDATETIME DEFAULT CURRENT_TIMESTAMP このコードは変更できません。doctrineからの変更です。 'DF_D34A04AD_A5D6E63E'は制約ではありません。 これはdoctrineからのものです。 Iamはどこにこの名前を教義にするのかわからない。 –

+0

>>> ALTER TABLE製品ALTER COLUMNタイムスタンプDATETIME DEFAULT CURRENT_TIMESTAMP変更できません<<< SQL Serverパーサーはサポートされていない構文のみを受け入れることはできません – sepupic

+0

>>>この名前をdoctrineのどこに取得するのかはわかりません。 SQL Server Profilerを使用して、サーバーに送信されたすべてのクエリを取得できます。だから、それが間違ったテーブルに行くかどうかを見つけることができます、多分それはスキーマなどを使用しません – sepupic

関連する問題