2016-10-21 225 views
0

我在写我自己的CMS学说2.5.4和纯PHP 5 同时建设,我反驳这个错误:Doctrine2映射枚举

Fatal error: Uncaught exception 'Doctrine\DBAL\DBALException' with message 'Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.' in /var/www/html/xxxx.com/public_html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php:423 Stack trace: #0 /var/www/html/xxxx.com/public_html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php(126): Doctrine\DBAL\Platforms\AbstractPlatform->getDoctrineTypeMapping('enum') #1 /var/www/html/xxxxx.com/public_html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php(820): Doctrine\DBAL\Schema\MySqlSchemaManager->_getPortableTableColumnDefinition(Array) #2 /var/www/html/xxxx.com/public_html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php(175): Doctrine\DBAL\Schema\AbstractSchemaManager->_getPortableTableColumnList('bonus_top_....', 'xxxx', Array) #3 /var/www/html/xxxx.com/public_html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php(281) in /var/www/html/xxxx.com/public_html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php on line 423 my config.php:

<?php 
ini_set("display_errors",true); 
date_default_timezone_set("Asia/Hongkong"); 
define('TIMER_START', microtime(true)); 
define('DS', DIRECTORY_SEPARATOR); 
define('ROOT_DIR', realpath(dirname(__FILE__)). DS); 
define('DAODIR', ROOT_DIR.'DAO'.DS); 
define('MNGDIR', ROOT_DIR.'manager'.DS); 
define('HDLDIR' , ROOT_DIR.'handler'.DS); 
define('TPLDIR', ROOT_DIR.'template'.DS); 
define('SKNDIR', TPLDIR.'skin'.DS);  
define('MDLDIR', ROOT_DIR.'model'.DS);    
define('DBN', 'xxxx');  
define('HOST', 'xxxx');   
define('USR', 'xxxx'); 
define('PWD','xxxx'); 
require_once "vendor/autoload.php"; 

use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

$paths = array(MDLDIR); 
$isDevMode = false; 

// the connection configuration 
$dbParams = array(
    'driver' => 'pdo_mysql', 
    'host'  => HOST, 
    'user'  => USR, 
    'password' => PWD, 
    'dbname' => DBN, 
    'charset' =>'utf8', 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 
$em = EntityManager::create($dbParams, $config);  
?> 

和我news.php

<?php 
/** 
* @Entity @Table(name="news") 
*/ 
class News{ 
/** 
* @nid @Column(type="integer") // **my id column is nid** 
* @GeneratedValue  
*/ 
public $id; 
/** @author @Column(type="string")*/ 
public $author; 
/** @date @Column(type="integer")*/ 
public $date; 
/** @title @Column(type="string")*/ 
public $title; 
/**@content @Column(type="text")*/ 
public $content; 
/**@full @Column(type="text")*/ 
public $full; 
/**@title_en @Column(type="string")*/ 
public $title_en; 
/**@content_en @Column(type="text")*/ 
public $content_en; 
/**@full_en @Column(type="text")*/ 
public $full_en; 
/**@flink @Column(type="text")*/ 
public $flink; 
/**@img @Column(type="text")*/ 
public $img; 
} 
?> 

我的表news在MySQL:

+------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+------------+--------------+------+-----+---------+----------------+ 
| nid  | int(11)  | NO | PRI | NULL | auto_increment | 
| author  | varchar(50) | NO |  |   |    | 
| date  | int(11)  | NO |  | 0  |    | 
| title  | varchar(255) | NO |  |   |    | 
| content | text   | NO |  | NULL |    | 
| full  | text   | NO |  | NULL |    | 
| title_en | varchar(255) | NO |  |   |    | 
| content_en | text   | NO |  | NULL |    | 
| full_en | text   | NO |  | NULL |    | 
| flink  | text   | NO |  | NULL |    | 
| img  | text   | NO |  | NULL |    | 
+------------+--------------+------+-----+---------+----------------+ 

我试图修复为this article但没有工作。 我的设置原则是this link。 我真的不知道为什么。 请帮帮我。 在此先感谢。

P/s:我不使用任何奇怪的类型,如枚举....(新手T_T)。

+0

我不认为问题与您发布的代码相关联。应该有别的东西。我相信有一些使用枚举类型的表 –

回答

1

由于数据库是我的公司不是我的,我不知道该教义会扫描我所有的数据库,但不像我为配置(只有一个datat能够演示)。 当我注意到错误发现我另一张桌子。

_getPortableTableColumnList('bonus_top_....', 'xxxx', Array) #3 

所以我确实修复了这张表,它有枚举类型。 在供应商/教义/ DBAL/lib中/教义/ DBAL /平台/ MySqlPlatform.php 添加"enum" => 'string'

感谢大家。 对不起,让人不安。