【问题标题】:Problems using Doctrine 2 CLI to connect to vagrant (scotchbox) database使用 Doctrine 2 CLI 连接到 vagrant (scotchbox) 数据库的问题
【发布时间】:2015-02-19 18:05:44
【问题描述】:

我正在尝试将 Doctrine 2 ORM 用于我的 PHP Web 应用程序,但遇到了一个我无法解决的问题。

为了进行测试,我正在使用安装了 Scotchbox 的 Vagrant(安装了一个基本的 LAMP 堆栈)。

我正在尝试运行 $vendor/bin/doctrine orm:schema-tool:create 并且不断收到此错误:

[Doctrine\DBAL\Exception\ConnectionException]
驱动发生异常:没有这样的文件或目录

[Doctrine\DBAL\Driver\Mysqli\MysqliException]
没有这样的文件或目录

这是我的连接参数:

  $isDevMode = true;
  $paths = array("db-entities/");

  $dbParams = array(
    'driver'   => 'mysqli',
    'user'     => 'root',
    'password' => 'root',
    'dbname'   => 'scotchbox'
  );

  $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
  $entityManager = EntityManager::create($dbParams, $config);

如果我将 'host' => '127.0.0.1' 添加到数组中,则会收到不同的错误:

[Doctrine\DBAL\Exception\ConnectionException]
驱动发生异常:连接被拒绝

[Doctrine\DBAL\Driver\Mysqli\MysqliException]
连接被拒绝

如果我尝试使用标准的 mysqli 调用进行连接,它可以工作 (DB_HOST = 'localhost'):

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  if (!$mysqli) {
    die("Database connection failed:");
  }

我不确定我哪里出错了??

【问题讨论】:

  • 如果你在数组中添加'host' => 'localhost'?我在 OSX 安装上的 2 个 mysql 实例也遇到了类似的问题......也许也检查你的进程。
  • 如果我添加它,它会给我带来与没有它相同的错误。
  • ps waux | grep mysql 说了什么?

标签: php doctrine-orm vagrant


【解决方案1】:

检查你是否在 vagrant 机器上安装了php-mysql

【讨论】:

    【解决方案2】:

    对于那些也可能遇到这个问题的人,这里是解决方案:

    只需更新 Vagrantfile 即可使用 rsync:

    config.vm.synced_folder ".", "/var/www", type: "rsync",
        rsync__exclude: ".git/" 
    

    代替默认:

    config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"]
    

    每次你想更新你的虚拟机时都需要运行vagrant rsync,但现在你可以ssh进入并成功运行以下命令:

    $vendor/bin/doctrine orm:schema-tool:create
    

    【讨论】:

    • 您可能只是删除安装选项(或更新它们),但我还没有测试过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多