如何在 symfony 中添加自定义 mysql 数据库

How to add custom mysql database in symfony

首先大家好!

我在 Symfony 1.4 网站上,我对这个框架并不了解。

站点已经使用了 2 个数据库连接,在 databases.yml

all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=localhost;dbname=my_db_name
      username: my_username
      password: ***
      charset: utf8
      encoding: utf8
      attributes:
        default_table_collate: utf8_general_ci
        default_table_charset: utf8
        use_native_enum: true

# Base de test
test:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=localhost;dbname=my_other_db_name
      username: my_username
      password: ***
      charset: utf8
      encoding: utf8
      attributes:
        default_table_collate: utf8_general_ci
        default_table_charset: utf8
        use_native_enum: true

我认为它在工作,我从不使用基础测试,但我想它在工作。 我需要使用另一个数据库,这次不是在 localhost 中,而是来自另一个服务器。 我尝试了很多东西,我从 Whosebug post.

中学到了东西

我在我的模块中创建了一个配置文件夹,我将代码放入新的 databases.yml

all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=mysql_host.bdb;dbname=mysql_db_name
      username: mysql_username
      password: ***
      charset: utf8
      encoding: utf8
      attributes:
        default_table_collate: utf8_general_ci
        default_table_charset: utf8
        use_native_enum: true

我不知道如何访问此数据库,似乎根本无法正常工作。 所以我直接尝试进入我的模板,似乎合乎逻辑,因为我只需要将此数据库放入1个模板,响应一个表单。

$bd_nom_serveur='mysql_host.bdb';
$bd_login='mysql_user';
$bd_mot_de_passe='***';
$bd_nom_bd='mysql_db_name';

$base = mysqli_connect($bd_nom_serveur, $bd_login, $bd_mot_de_passe, $bd_nom_bd);

向我发送警告

Warning: mysqli_connect(): (HY000/2005): Unknown MySQL server host 'mysql_host.bdb' (2) in /srv/d_/www/draft.site.com/apps/frontend/modules/FormContactSlot/templates/sendMailCatalog.php on line 14

我也试过了

$dsn = 'mysql:dbname=mysql_db_name;host=mysql_host.bdb';
$user = 'mysql_user';
$password = '***';

$dbh = new PDO($dsn, $user, $password);
$conn = Doctrine_Manager::connection($dbh);

发送错误

500 | Internal Server Error | PDOException SQLSTATE[HY000] [2005] Unknown MySQL server host 'mysql_host.bdb' (2)

我尝试使用和不使用 .bdb,但没有任何变化。 我不知道如何从 symfony 1.4

访问这个数据库

谁能帮帮我! 请记住,我对 Symfony 知之甚少,请保持温和!

编辑:

我还尝试了另一个技巧。 我在 config/databases.yml

上的主要数据库之后添加数据库
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=localhost;dbname=my_db_name
      username: my_username
      password: ***
      charset: utf8
      encoding: utf8
      attributes:
        default_table_collate: utf8_general_ci
        default_table_charset: utf8
        use_native_enum: true
  client:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=host.bdb;dbname=dbname
      username: user
      password: ***
      charset: utf8
      encoding: utf8
      attributes:
        default_table_collate: utf8_general_ci
        default_table_charset: utf8
        use_native_enum: true

这次我每次尝试访问我的网站时都会遇到错误。我也执行命令 symfony doctrine:build-schema 但这向我发送了相同的错误 unknown mysql server... 我需要帮助,我必须从 symfony 访问我的 mysql 数据库,我别无选择。

我回复自己是因为我找到了解决办法:

没有解决方案。

我使用的是共享 OVH 解决方案,共享 OVH 数据库不可远程访问。所以我必须采取vps解决方案,其中有数据库的IP主机。

感谢 Marek 帮助我找到解决方案。 这是有效的查询。

$bd_nom_serveur='IP host';
$bd_login='mysql_user';
$bd_mot_de_passe='***';
$bd_nom_bd='mysql_db_name';

$base = mysqli_connect($bd_nom_serveur, $bd_login, $bd_mot_de_passe, $bd_nom_bd);

PDO 仍然无法正常工作。