Propel - 没有为数据库定义连接 "default"
Propel - No connection defined for database "default"
我正在努力获得连接到数据库的动力。我使用 propel reverse "..."
创建了 类 和 table 映射,并创建了以下结构:
propel.ini
[propel]
# A better Pluralizer
propel.builder.pluralizer.class = builder.util.StandardEnglishPluralizer
propel.xml
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<config>
<propel>
<general>
<project>PHP-PlayArea</project>
<version>2.0.0-dev</version>
</general>
<database>
<connections>
<connection id="default">
<adapter>mysql</adapter>
<classname>Propel\Runtime\Connection\ConnectionWrapper</classname>
<dsn>mysql:host=localhost;dbname=test</dsn>
<user>me</user>
<password>blahblahblah</password>
<settings>
<charset>utf8</charset>
</settings>
</connection>
</connections>
</database>
<runtime>
<defaultConnection>default</defaultConnection>
<connection>default</connection>
</runtime>
<generator>
<defaultConnection>default</defaultConnection>
<connection>default</connection>
</generator>
</propel>
</config>
Propel.php
<?php namespace propel;
use Propel\Runtime\Propel;
Propel::init("../propel/propel.xml");
我有以下失败的单元测试:
// Include the main Propel script
require_once '../propel/Propel.php';
require_once '../propel/Base/Users.php';
require_once '../propel/Map/UsersTableMap.php';
require_once '../propel/Users.php';
use propel\Users;
const name = 'gareth';
class PropelTests extends \PHPUnit_Framework_TestCase {
public function testAddUser()
{
// create a user ?
$user = new Users();
// brings back an empty config
$manager = new ConfigurationManager();
//Get the array of runtime configured connections
$connections = $manager->get();
// *** fails here ***
// test connections
$con = Propel::getWriteConnection(UsersTableMap::DATABASE_NAME);
$con = Propel::getReadConnection(UsersTableMap::DATABASE_NAME);
输出;
C:\wamp\bin\php\php5.5.12\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 C:\Users\gareth\AppData\Local\Temp\ide-phpunit.php --no-configuration Tests\PropelTests C:\Development\PHP-PlayArea\Tests\Propel.Tests.php
Testing started at 11:40 ...
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<config>
<propel>
<!-- full config as above -->
</propel>
</config>
No connection defined for database "default". Did you forget to define a connection or is it wrong written?
C:\Development\PHP-PlayArea\vendor\propel\propel\src\Propel\Runtime\ServiceContainer\StandardServiceContainer.php:279
C:\Development\PHP-PlayArea\vendor\propel\propel\src\Propel\Runtime\ServiceContainer\StandardServiceContainer.php:355
C:\Development\PHP-PlayArea\propel\Base\Users.php:655
C:\Development\PHP-PlayArea\Tests\Propel.Tests.php:29
有什么想法吗?我有点难过...我的配置看起来不错,但显然不是。
更新:2015/07/06 13:01:调试后它看起来像炸毁了,因为找不到连接管理器
您在 propel.xml 的下一行中缺少端口号:
<dsn>mysql:host=localhost:<<port number>>;dbname=test</dsn>
如果您从现有模式进行逆向工程,还要检查 schema.xml 中的数据库名称。确保它不是空白的。
我刚开始学习 Propel,我遇到了完全相同的问题。
我试过你在这里做的事情:
Propel::init("../propel/propel.xml");
所做的只是包含文件并将内容打印到输出中,就像在输出中一样。
我终于通过有效地将您的 Propel.php 替换为:
使其正常工作
<?php
use Propel\Common\Config\ConfigurationManager;
use Propel\Runtime\Connection\ConnectionManagerSingle;
use Propel\Runtime\Propel;
// Load the configuration file
$configManager = new ConfigurationManager( '../propel/propel.xml' );
// Set up the connection manager
$manager = new ConnectionManagerSingle();
$manager->setConfiguration( $configManager->getConnectionParametersArray()[ 'default' ] );
$manager->setName('default');
// Add the connection manager to the service container
$serviceContainer = Propel::getServiceContainer();
$serviceContainer->setAdapterClass('default', 'mysql');
$serviceContainer->setConnectionManager('default', $manager);
$serviceContainer->setDefaultDatasource('default');
希望对您有所帮助
我正在努力获得连接到数据库的动力。我使用 propel reverse "..."
创建了 类 和 table 映射,并创建了以下结构:
propel.ini
[propel]
# A better Pluralizer
propel.builder.pluralizer.class = builder.util.StandardEnglishPluralizer
propel.xml
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<config>
<propel>
<general>
<project>PHP-PlayArea</project>
<version>2.0.0-dev</version>
</general>
<database>
<connections>
<connection id="default">
<adapter>mysql</adapter>
<classname>Propel\Runtime\Connection\ConnectionWrapper</classname>
<dsn>mysql:host=localhost;dbname=test</dsn>
<user>me</user>
<password>blahblahblah</password>
<settings>
<charset>utf8</charset>
</settings>
</connection>
</connections>
</database>
<runtime>
<defaultConnection>default</defaultConnection>
<connection>default</connection>
</runtime>
<generator>
<defaultConnection>default</defaultConnection>
<connection>default</connection>
</generator>
</propel>
</config>
Propel.php
<?php namespace propel;
use Propel\Runtime\Propel;
Propel::init("../propel/propel.xml");
我有以下失败的单元测试:
// Include the main Propel script
require_once '../propel/Propel.php';
require_once '../propel/Base/Users.php';
require_once '../propel/Map/UsersTableMap.php';
require_once '../propel/Users.php';
use propel\Users;
const name = 'gareth';
class PropelTests extends \PHPUnit_Framework_TestCase {
public function testAddUser()
{
// create a user ?
$user = new Users();
// brings back an empty config
$manager = new ConfigurationManager();
//Get the array of runtime configured connections
$connections = $manager->get();
// *** fails here ***
// test connections
$con = Propel::getWriteConnection(UsersTableMap::DATABASE_NAME);
$con = Propel::getReadConnection(UsersTableMap::DATABASE_NAME);
输出;
C:\wamp\bin\php\php5.5.12\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 C:\Users\gareth\AppData\Local\Temp\ide-phpunit.php --no-configuration Tests\PropelTests C:\Development\PHP-PlayArea\Tests\Propel.Tests.php
Testing started at 11:40 ...
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<config>
<propel>
<!-- full config as above -->
</propel>
</config>
No connection defined for database "default". Did you forget to define a connection or is it wrong written?
C:\Development\PHP-PlayArea\vendor\propel\propel\src\Propel\Runtime\ServiceContainer\StandardServiceContainer.php:279
C:\Development\PHP-PlayArea\vendor\propel\propel\src\Propel\Runtime\ServiceContainer\StandardServiceContainer.php:355
C:\Development\PHP-PlayArea\propel\Base\Users.php:655
C:\Development\PHP-PlayArea\Tests\Propel.Tests.php:29
有什么想法吗?我有点难过...我的配置看起来不错,但显然不是。
更新:2015/07/06 13:01:调试后它看起来像炸毁了,因为找不到连接管理器
您在 propel.xml 的下一行中缺少端口号:
<dsn>mysql:host=localhost:<<port number>>;dbname=test</dsn>
如果您从现有模式进行逆向工程,还要检查 schema.xml 中的数据库名称。确保它不是空白的。
我刚开始学习 Propel,我遇到了完全相同的问题。
我试过你在这里做的事情:
Propel::init("../propel/propel.xml");
所做的只是包含文件并将内容打印到输出中,就像在输出中一样。
我终于通过有效地将您的 Propel.php 替换为:
使其正常工作<?php
use Propel\Common\Config\ConfigurationManager;
use Propel\Runtime\Connection\ConnectionManagerSingle;
use Propel\Runtime\Propel;
// Load the configuration file
$configManager = new ConfigurationManager( '../propel/propel.xml' );
// Set up the connection manager
$manager = new ConnectionManagerSingle();
$manager->setConfiguration( $configManager->getConnectionParametersArray()[ 'default' ] );
$manager->setName('default');
// Add the connection manager to the service container
$serviceContainer = Propel::getServiceContainer();
$serviceContainer->setAdapterClass('default', 'mysql');
$serviceContainer->setConnectionManager('default', $manager);
$serviceContainer->setDefaultDatasource('default');
希望对您有所帮助