"Unable to open database file" 尝试在 Symfony 中加载 Doctrine Data Fixtures 时出错

"Unable to open database file" error when trying to load Doctrine Data Fixtures in Symfony

我将 pdo_mysql 用于 prod、stag 和 dev 环境,将 pdo_sqlite 用于测试环境。问题是加载 Doctrine Data Fixtures 会产生 unable to open database file 错误,如下所示。我分配了缓存文件夹的权限,如 symfony website 中定义的,也尝试使用 777,但没有成功。

我在 MAC OS Yosemite 并且在 PHP.

中启用了 sqlite3
PDO drivers mysql, sqlite, dblib, pgsql
SQLite3 module version  0.7-dev
SQLite Library  3.8.8.3

此命令创建数据库成功:

MBP:football bc$ php app/console doctrine:schema:update --force --env=test
Updating database schema...
Database schema updated successfully! "9" queries were executed

此命令失败:

MBP:football bc$ php app/console doctrine:fixtures:load --no-interaction --no-debug --env=test

  [PDOException]                                     
  SQLSTATE[HY000] [14] unable to open database file 

config_test.yml(两种配置都不起作用)

doctrine:
    dbal:
        driver: pdo_sqlite
        path: %kernel.cache_dir%/default.db
        charset: UTF8

#doctrine:
#    dbal:
#        default_connection: default
#
#        connections:
#            default:
#                driver:  pdo_sqlite
#                path:    %kernel.cache_dir%/default.db
#                charset: utf8

config.yml

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

更新:

Settings/steps 以上在 Ubuntu 中工作正常所以这是一个 MAC OS 相关的问题。 Mac 用户,知道为什么吗?

我遇到了同样的问题并通过为数据库文件创建父目录解决了这个问题: database_path: %kernel.root_dir%/data/data.db3,所以我创建了 'data' 目录。而且,当然,确保所有文件夹都是 Doctrine 可写的。希望对您有所帮助!

如 Symfony website 中所建议,如果您 运行 遇到某种权限问题,Mac 用户应通过 [=22] 使用对 app/cache 文件夹的特定权限=]宁命令如下:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

实际上这就是导致问题的原因所以解决这个问题运行:

rm -Rf app/cache/test/*

并且不向 cache/test 文件夹分配任何权限。