我在prod,stag和dev环境中使用pdo_mysql
,在测试环境中使用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
更新
上面的设置/步骤在Ubuntu中运行正常,因此这是与MAC OS相关的问题。 Mac用户,知道为什么吗?
答案 0 :(得分:2)
我遇到了同样的问题,并通过为数据库文件创建父目录来解决它:
database_path: %kernel.root_dir%/data/data.db3
,所以我创建了数据'目录。当然,要确保所有文件夹都是Doctrine可写的。希望它有所帮助!
答案 1 :(得分:1)
正如Symfony website中所述,如果您遇到某种权限问题,Mac用户应通过运行以下命令在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
文件夹分配任何权限。