generate.php 文件出现 Doctrine dsn 错误

发布于 2024-10-05 19:01:27 字数 6109 浏览 0 评论 0 原文

我一直在研究下面链接上的介绍,并且已经能够完成前面的步骤,但是当运行generate.php 文件时,我收到有关 dsn 的错误。是否遗漏了更改 dsn 的步骤? http: //www.doctrine-project.org/projects/orm/1.2/docs/manual/introduction-to-models/en#introduction-to-models

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

使用generate.php时出现Doctrine致命错误

我在这里的generate.php文件中看到了类似的问题(上面的链接)但提供的解决方案和错误略有不同,在我的情况下不起作用。将 dsn 字符串更改为 $ conn = doctrine_manager ::连接('mysql:// sonint99:/学说');也不行。我现在收到这个错误。

si2:doctrine_test sone$ phpgenerate.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

I have been working on the introduction on the link below and have been able to complete previous steps but when it comes to running the generate.php file I get an error about the dsn. Is there missing steps that was ommited about changing the dsn?
http://www.doctrine-project.org/projects/orm/1.2/docs/manual/introduction-to-models/en#introduction-to-models

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

I saw a similar issue (link above) with the generate.php file here but the solution offered and error are slight different and don't work in my case. Changing the dsn string to
$conn = Doctrine_Manager::connection('mysql://sonint99:[email protected]/doctrine'); does not work either. I get this error now.

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

my boot strap

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

a√萤火虫的光℡ 2024-10-12 19:01:27

文档相当奇怪,因为他们提到了 ::connection() 方法的 PDO。该方法甚至没有在网站上的教程中使用;)

正确的连接调用可能是这样的

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

The Docs are rather strange because they mention PDO for the ::connection() method. This method is not even used in the tutorials on the site ;)

A proper call with the connection could be like

$db['dsn'] = "mysql://user:password@localhost/database"; //use localhost instead of 127.0.0.1
$conn = Doctrine_Manager::connection($db['dsn'], 'con_name');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文