【发布时间】:2019-01-27 00:46:28
【问题描述】:
我使用的是 laravel 5.2 版本和 PHP 7.1。我正在尝试从我的 laravel 项目中迁移文件,我有代码来检查列的存在,如下所示 -
if (!Schema::hasColumn('table1', 'column1')) {
// Add column1
}
我知道代码非常好,并且在设置相同的代码时已经运行了好几次。但现在我在单独的机器上尝试这个并且失败并出现错误 -
[ErrorException]
未定义的属性: stdClass::$column_name
如果我从代码中删除 hasColumn 检查,我可以摆脱这个错误,但这是我在整个代码中编写的内容,不能仅仅为了运行迁移而修改每个迁移。
非常感谢您对此的任何帮助。
堆栈跟踪:
[ErrorException]
未定义属性:stdClass::$column_name异常跟踪:() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:18 照亮\Foundation\Bootstrap\HandleExceptions->handleError() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:18 Illuminate\Database\Query\Processors\MySqlProcessor->Illuminate\Database\Query\Processors{closure}() 在 n/a:n/a array_map() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:21 Illuminate\Database\Query\Processors\MySqlProcessor->processColumnListing() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:40 Illuminate\Database\Schema\MySqlBuilder->getColumnListing() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:69 Illuminate\Database\Schema\Builder->hasColumn() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217 Illuminate\Support\Facades\Facade::__callStatic() at /private/var/www/html/whitelabel_eb/database/migrations/2017_07_28_053158_add_columns_to_project_configurations_table.php:16 AddColumnsToProjectConfigurationsTable->{closure}() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php:69 Illuminate\Database\Schema\Blueprint->__construct() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:207 Illuminate\Database\Schema\Builder->createBlueprint() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:116 Illuminate\Database\Schema\Builder->table() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217 Illuminate\Support\Facades\Facade::__callStatic() at /private/var/www/html/whitelabel_eb/database/migrations/2017_07_28_053158_add_columns_to_project_configurations_table.php:103 AddColumnsToProjectConfigurationsTable->up() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:135 Illuminate\Database\Migrations\Migrator->runUp() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:112 Illuminate\Database\Migrations\Migrator->runMigrationList() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:85 Illuminate\Database\Migrations\Migrator->run() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:74 Illuminate\Database\Console\Migrations\MigrateCommand->fire() at 不适用:不适用 call_user_func_array() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Container/Container.php:507 照亮\容器\容器->调用()在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Console/Command.php:150 Illuminate\Console\Command->execute() at /private/var/www/html/whitelabel_eb/vendor/symfony/console/Command/Command.php:238 Symfony\Component\Console\Command\Command->run() at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Console/Command.php:136 Illuminate\Console\Command->run() at /private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:840 Symfony\Component\Console\Application->doRunCommand() 在 /private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:190 Symfony\Component\Console\Application->doRun() 在 /private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:114 Symfony\Component\Console\Application->run() 在 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:107 Illuminate\Foundation\Console\Kernel->handle() at /private/var/www/html/whitelabel_eb/artisan:35
【问题讨论】:
-
你能发布完整的堆栈跟踪而不是直接的错误吗?
-
https://github.com/the-control-group/voyager/issues/1528 的帖子中也发生了同样的事情。但是他们使用 voyager 作为
php artisan voyager:install --with-dummy。 -
@JohnEllmore 没有堆栈跟踪,只有上面显示的错误。
-
不幸的是,上面的错误消息并没有太多可取之处。您是否通过 artisan 命令行工具运行这些迁移?如果是这样,我认为添加
-vvv应该包含一个完整的堆栈跟踪,其中包含任何错误。那就是php artisan migrate -vvv。 -
嗨@JohnEllmore,我在下面的答案中添加了堆栈跟踪。
标签: php laravel laravel-5.2 laravel-migrations mysql-8.0