Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Doktryna 2:Nie można zaktualizować kolumny DateTime w programie SQL Server 2008apm

Natrafiłem na ten problem z Doctrine 2.5 i SQL Server 2012. Problem polega na tym, że pole bazy danych ma typ DATETIME , ale doctirne obsługuje tylko DATETIME2 na SQLServer2008Platform i nowszych.

Nie powinieneś edytować plików w katalogu dostawcy. Poprawną odpowiedzią jest utworzenie własnego typu:Typy niestandardowego mapowania Doctrine . W moim przypadku rozszerzyłem obecny DateTimeType:

<?php

namespace AppBundle\Doctrine\Type;

use Doctrine\DBAL\Types\DateTimeType;
use Doctrine\DBAL\Platforms\AbstractPlatform;

class DateTime extends DateTimeType
{
    private $dateTimeFormatString = 'Y-m-d H:i:s.000';

    public function convertToDatabaseValue($value, AbstractPlatform $platform)
    {
        return ($value !== null)
            ? $value->format($this->dateTimeFormatString) : null;
    }

}

A potem w pliku config.yml Symfony:

Typy
    types:
      datetime: AppBundle\Doctrine\Type\DateTime


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uwaga użytkownicy korzystający z SQL Server 2008 i SQL Server 2008 R2

  2. Jak przywrócić bazę danych z C#

  3. Subskrypcja raportu SSRS zakończyła się błędem

  4. Sterownik Microsoft ODBC 13 dla programu SQL Server:Logowanie nie powiodło się dla użytkownika „sa”

  5. Nowe funkcje w SQL Server 2017 (aparat bazy danych)