使用Doctrine 2 CLI连接到vagrant(scotchbox)数据库的问题

时间:2014-12-21 12:03:41

标签: php doctrine-orm vagrant

我试图在我的PHP网络应用程序中使用Doctrine 2 ORM,而且我遇到了一个我无法解决的问题。

为了测试我使用Vagrant,安装了Scotchbox(安装基本的LAMP堆栈)。

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

[学说\ DBAL \异常\ ConnectionException]
  驱动程序中发生异常:没有此类文件或目录

[学说\ DBAL \驱动\ 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);

如果我添加主机' => ' 127.0.0.1'到数组,然后我得到一个不同的错误:

[学说\ DBAL \异常\ ConnectionException]
  驱动程序中发生异常:连接被拒绝

[学说\ DBAL \驱动\ mysqli的\ MysqliException]
  连接被拒绝

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

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

我不知道我哪里出错了?

2 个答案:

答案 0 :(得分:0)

检查您是否在流浪汉机器上安装了php-mysql

答案 1 :(得分:0)

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

只需更新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,但现在可以成功运行并运行以下命令:

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