2010-12-05 6 views
0

Ich habe an der Einführung auf den Link unten gearbeitet und war in der Lage, vorherige Schritte abzuschließen, aber wenn es um die generate.php Datei ausgeführt wird, bekomme ich einen Fehler über die DSN. Gibt es fehlende Schritte, die beim Ändern des DSN weggelassen wurden? http://www.doctrine-project.org/projects/orm/1.2/docs/manual/introduction-to-models/en#introduction-to-modelsDoctrine dsn Fehler mit generate.php file

----------------------------------- 
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

sah ich ein ähnliches Problem (Link oben) mit der generate.php Datei hier aber die Lösung angeboten und Fehler sind gering unterschiedlich und nicht in meinem Fall arbeiten. Ändern der DSN-Zeichenfolge in $ conn = Doctrine_Manager :: Verbindung ('mysql: // sonint99: [email protected]/doctrine'); geht auch nicht. Ich bekomme diesen Fehler jetzt.

SI2: doctrine_test sone $ 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 

mein Bootstrap

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

Sie sollen Ihr Passwort in jedem Live-System ändern, wenn es das gleiche ist, wie Sie schrieb Hier. Entfernen Sie immer echte Benutzer-/Passwortdaten! – DrColossos

Antwort

1

Die Docs sind ziemlich merkwürdig, weil sie PDO erwähnen für die ::connection() Methode. Diese Methode wird nicht einmal in den Tutorials auf der Website verwendet;)

Ein richtiger Anruf mit der Verbindung wie

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

Vielen Dank für Ihre Antwort, Sie hatten Recht über die falsche Verwendung von PDO-Verbindung, aber es wurde früher hier http://www.doctrine-project.org/projects/orm/1.2/docs/manual/introduction-to-connections verwendet/de und ich habe die Änderungen später übersprungen und dachte, es sei in Ordnung, sie für meine Verbindung weiter zu verwenden. – user530361