【问题标题】:Symfony 2 Doctrine MS SQL ErrorSymfony 2 Doctrine MS SQL 错误
【发布时间】:2015-03-19 22:07:12
【问题描述】:

我已经开始从事一个 Symfony 2.3 项目,我需要将一个用经典 Asp 编写的金融网站转换为 Php。

客户端有 Ms-Sql 数据库,将与 Symfony 2.3 和教义一起使用,我已经创建了数据库并从模式文件中加载了空表。

现在每当我尝试从数据库(Ms-Sql)生成实体时,我都会收到以下错误:

教义\DBAL\DBALException 请求未知数据库类型时间戳,Doctrine\DBAL\Platforms\SQLServer2008Platform 可能不支持

有谁知道如何解决这个问题或者我应该怎么做才能避免这种情况?

请帮助我,因为我是 Symfony 2.3 的新手,谢谢

【问题讨论】:

    标签: php sql-server symfony doctrine-orm doctrine


    【解决方案1】:

    您可以在有关该主题的学说文档之后添加自己的类型:

    http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/mysql-enums.html

    这与枚举类型有关,但您可以将其与任何类型(如时间戳)一起使用,并将其链接到字符串类型或数据库支持的任何其他最适合您的类型。

    src/My/Project/MyProjectBundle.php

    public function boot()
    {
        $em = $this->container->get('doctrine.orm.entity_manager');
        $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('timestamp','string');
    }
    

    通常你所有的时间戳类型都应该被翻译成字符串。

    【讨论】:

    • 如果doctrine:schema:validate 在日期时间2 失败时对我有用:Unknown database type datetime2 requested, Realestate\MssqlBundle\Platforms\DblibPlatform
    • @Nawfal Serrar 在您的解决方案中,您建议在建立连接或获取数据期间对代码进行调整。
    • 我必须通过在控制台中编写以下命令来从数据库表中生成实体:php app/console dictionary:mapping:import --force AcmeBlogBu​​ndle yml
    • 此时没有生成实体,并且学说显示了我在问题中发布的错误。如何解决这个问题?
    • @Robin 你添加了我在映射之前发布到你的 AcmeBlogBu​​ndle.php 的函数:import?
    【解决方案2】:

    以下配置适用于 Synfony 3.2

    1) 在 config.yml 中添加 types 下的新类型并映射到 mssql 连接下

    # Doctrine Configuration
    doctrine:
        dbal:
            types:
                timestamp:  AppBundle\Type\Timestamp
    ..
    ..
    
            connections:
                mssql:
                    driver:   sqlsrv
                    host:     "%mssql_host%"
                    port:     "%mssql_port%"
                    dbname:   "%mssql_db_name%"
                    user:     "%mssql_user%"
                    password: "%mssql_password%"
                    mapping_types:
                        timestamp: timestamp
    

    2) 创建类 AppBundle\Type\Timestamp,如下 url:

    https://github.com/mmerian/doctrine-timestamp/blob/master/lib/DoctrineTimestamp/DBAL/Types/Timestamp.php

    3) 使用以下命令从数据库中生成实体:

    php bin/console 原则:mapping:import --force AppBundle xml --em=mssql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多