postgresql - Yii2 迁移不适用于 Heroku

标签 postgresql heroku migration yii2

最近,我创建了 Yii2 应用程序(基本模板)并成功部署到 Heroku 上。然后我想设置数据库,所以我为 heroku 应用程序添加了 postgresql 插件,并像这样配置了数据库配置:

if (getenv("YII_ENV") == 'prod') {
    $url = parse_url(getenv("DATABASE_URL"));
    $dsn = 'pgsql:host='.$url['host'].';port='.$url['port'].';dbname='.substr($url["path"], 1);
    $username = $url["user"];
    $password = $url["pass"];
} else {
    $dsn = 'mysql:host=localhost;dbname=yii2_quizie';
    $username = 'root';
    $password = '1234';
}

return [
    'class' => 'yii\db\Connection',
    'dsn' => $dsn,
    'username' => $username,
    'password' => $password,
    'charset' => 'utf8',
];

之后我设置了两个 heroku 配置变量:YII_ENV=prodYII_DEBUG=false

然后我添加了简单的迁移并尝试使用 heroku run bash 运行它,然后运行 ​​php yii migrate

这就是我收到的:

~ $ php yii migrate
Exception 'ReflectionException' with message 'Class yii\gii\Module does not exist'

in /app/vendor/yiisoft/yii2/di/Container.php:415

Stack trace:
#0 /app/vendor/yiisoft/yii2/di/Container.php(415): ReflectionClass->__construct('yii\\gii\\Module')
#1 /app/vendor/yiisoft/yii2/di/Container.php(358): yii\di\Container->getDependencies('yii\\gii\\Module')
#2 /app/vendor/yiisoft/yii2/di/Container.php(151): yii\di\Container->build('yii\\gii\\Module', Array, Array)
#3 /app/vendor/yiisoft/yii2/BaseYii.php(340): yii\di\Container->get('yii\\gii\\Module', Array)
#4 /app/vendor/yiisoft/yii2/base/Module.php(354): yii\BaseYii::createObject('yii\\gii\\Module', Array)
#5 /app/vendor/yiisoft/yii2/base/Application.php(304): yii\base\Module->getModule('gii')
#6 /app/vendor/yiisoft/yii2/base/Application.php(267): yii\base\Application->bootstrap()
#7 /app/vendor/yiisoft/yii2/console/Application.php(114): yii\base\Application->init()
#8 /app/vendor/yiisoft/yii2/base/Object.php(107): yii\console\Application->init()
#9 /app/vendor/yiisoft/yii2/base/Application.php(206): yii\base\Object->__construct(Array)
#10 /app/vendor/yiisoft/yii2/console/Application.php(79): yii\base\Application->__construct(Array)
#11 /app/yii(22): yii\console\Application->__construct(Array)
#12 {main}

有人知道解决办法吗?在本地机器上迁移工作得很好。

最佳答案

通过在 heroku shell 中运行 composer install 解决了问题。这真的很奇怪,因为 heroku 应该会在上传应用程序后自动执行此操作。

关于postgresql - Yii2 迁移不适用于 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579945/

相关文章:

mysql - 更改 Rails 中现有列的位置

ruby-on-rails - Rails 中的聚合迁移

python - 在 heroku 上提供交互式 Bokeh 图

node.js - 从 Heroku 服务器删除上传的文件

docker - 如何使用daphne在heroku.yml中运行pgBouncer

coldfusion - 当我从 CF6.1 迁移到 CF8 或 Railo3.1 时,有哪些陷阱在等着我?

php - 可以修改由 artisan migrate 命令创建的模板吗?

nhibernate - 在 FluentNhibernate 上禁用表名双引号

java - 抽象类中的 Hibernate NamedQuery

postgresql - 查询以查找从他们的 birth_date 开始的年龄范围与索引之间的所有用户