2016-10-21 8 views
0
構築しながら、私はこのエラー反論私は教義2.5.4と純粋なPHP 5 で自分のCMSを書いて

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を

MySQLで
<?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

+------------+--------------+------+-----+---------+----------------+ 
| 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として修正しようとしましたが、うまくいきませんでした。 セットアップdoctrineのためにthis linkとしました。 私は本当に理由が分かりません。 私を助けてください。 ありがとうございます。

P/s:私はenum ....(newbie T_T)のような奇妙なタイプは使用しません。

+0

投稿したコードに問題が関連しているとは思われません。他に何かがあるはずです。私は使用される列挙型のテーブルがあると思います –

答えて

1

データベースが私の会社ではないため、私はdoctrineがすべてのデータベースをスキャンすることは知らなかったが、私はconfig(デモ用のdatatのみ)と同じではなかった。 エラーが私に別のテーブルに気づいたことに気付いたとき。

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

私は列挙型を持つこの表を修正しました。 ベンダー/ドクトリン/ DBAL/libに/ドクトリン/ DBAL /プラットフォームで/ MySqlPlatform.php が"enum" => 'string'

を追加するには、すべての人に感謝します。 迷惑をかけて申し訳ありません。

関連する問題