2010-12-05 6 views
0

私は下のリンクの紹介に取り組んでおり、前の手順を完了できましたが、generate.phpファイルの実行に関しては、dsnに関するエラーが発生します。 dsnを変更することについて間違っていた手順がありますか? http://www.doctrine-project.org/projects/orm/1.2/docs/manual/introduction-to-models/en#introduction-to-modelsDoctrine dsn error with generate.phpファイル

----------------------------------- 
error output 
----------------------------------- 
Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with message 'You must create your Doctrine_Connection by using a valid Doctrine style dsn in order to use the create/drop database functionality' in /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Connection.php:1460 
Stack trace: 
#0 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Manager.php(707): Doctrine_Connection->dropDatabase() 
#1 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Core.php(972): Doctrine_Manager->dropDatabases(Array) 
#2 /Users/sone/sources/doctrine1.2/doctrine_test/generate.php(8): Doctrine_Core::dropDatabases() 
#3 {main} 
    thrown in /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Connection.php on line 1460 
----------------------------------- 

Fatal Error with Doctrine while using generate.php

私はここでgenerate.phpファイルと同様の問題(上記のリンク)を見ましたが、提供するソリューションと誤差が異なるわずかであり、私の場合には動作しません。 dsn文字列を に変更する$ conn = Doctrine_Manager :: connection( 'mysql:// sonint99:[email protected]/doctrine');いずれも機能しません。私は今このエラーが発生します。

SI2:doctrine_testのソーン$ phpのgenerate.php

Fatal error: Uncaught exception 'Doctrine_Manager_Exception' with message 'Unknown connection: doctrine' in /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Manager.php:512 
Stack trace: 
#0 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Manager.php(554): Doctrine_Manager->getConnection('doctrine') 
#1 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Export.php(1107): Doctrine_Manager->getConnectionForComponent('Test') 
#2 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Export.php(1205): Doctrine_Export->exportSortedClassesSql(Array) 
#3 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Export.php(1100): Doctrine_Export->exportClasses(Array) 
#4 /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Core.php(894): Doctrine_Export->exportSchema('models') 
#5 /Users/sone/sources/doctrine1.2/doctrine_test/generate.php(11): Doctrine_Core::createTablesFromModels('models') 
#6 {main} 
    in /Users/sone/sources/doctrine1.2/doctrine_test/lib/vendor/doctrine/Doctrine/Manager.php on line 512 

私のブートストラップ

<?php 
// bootstrap.php 

/** 
* Bootstrap Doctrine.php, register autoloader specify 
* configuration attributes and load models. 
*/ 

require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php'); 

// ... 
spl_autoload_register(array('Doctrine', 'autoload')); 

// ... 
$manager = Doctrine_Manager::getInstance(); 
$manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true); 
$manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true); 

// Setting up DB connection 
$dsn = 'mysql:dbname=doctrine;host=127.0.0.1'; 
$user = 'sonint99'; 
$password = 'C2sHF9Zxq3ULXCTV'; 
$dbh = new PDO($dsn, $user, $password); 
$conn = Doctrine_Manager::connection($dbh,'doctrine'); 
Doctrine_Core::loadModels('models'); 
//$conn = Doctrine_Manager::connection('mysql://sonint99:[email protected]/doctrine'); 


generate.php 

<?php 


// generate.php 

require_once('bootstrap.php'); 

Doctrine_Core::dropDatabases(); 
Doctrine_Core::createDatabases(); 
Doctrine_Core::generateModelsFromYaml('schema.yml', 'models'); 
Doctrine_Core::createTablesFromModels('models'); 

schema.ymlの

Test: 
    connection: doctrine 
    tableName: test 
    columns: 
    id: 
     type: integer(8) 
     autoincrement: true 
     primary: true 
    name: 
     type: string() 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: false 
     autoincrement: false 
User: 
    connection: doctrine 
    tableName: user 
    columns: 
    id: 
     type: integer(8) 
     fixed: false 
     unsigned: false 
     primary: true 
     autoincrement: true 
    first_name: 
     type: string(255) 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: false 
     autoincrement: false 
    last_name: 
     type: string(255) 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: false 
     autoincrement: false 
    username: 
     type: string(255) 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: false 
     autoincrement: false 
    password: 
     type: string(255) 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: false 
     autoincrement: false 
    type: 
     type: string(255) 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: false 
     autoincrement: false 
    is_active: 
     type: integer(1) 
     fixed: false 
     unsigned: false 
     primary: false 
     default: '1' 
     notnull: false 
     autoincrement: false 
    is_super_admin: 
     type: integer(1) 
     fixed: false 
     unsigned: false 
     primary: false 
     default: '0' 
     notnull: false 
     autoincrement: false 
    created_at: 
     type: timestamp(25) 
     fixed: false 
     unsigned: false 
     primary: false 
     notnull: true 
     autoincrement: false 
    updated_at: 
     type: timestamp(25) 
     fixed: false 
     unsigned: false 
     primary: false 
     default: '0000-00-00 00:00:00' 
     notnull: true 
     autoincrement: false 
+1

ようなことができ

それはあなたが書いたものと同じである場合は、任意のライブシステムにパスワードを変更する必要がありますここに。 Allwaysは実際のユーザー/パスワードのデータを削除します。 – DrColossos

答えて

1

ドキュメントは、彼らがためにPDOに言及しているため、むしろ奇妙です::connection()メソッド。この方法であっても、サイト上のチュートリアルで使用されていません。)接続に適切な呼び出しが

$db['dsn'] = "mysql://user:[email protected]/database"; //use localhost instead of 127.0.0.1 
$conn = Doctrine_Manager::connection($db['dsn'], 'con_name'); 
+0

ご回答いただきありがとうございます。PDO接続の間違った使用については正解でしたが、以前はここで使用されていました。http://www.doctrine-project.org/projects/orm/1.2/docs/manual/introduction-to-connections/jaそして、後で変更をスキップして、接続に引き続き使用しても問題ないと思った。 – user530361