Open
Description
What steps will reproduce the problem?
- Re-run
migration up
after a partially complete migration due to an error (eg. table already exists) - Attempt to run migration:
➜ php tests/bin/yii migrate
Yii Migration Tool (based on Yii v2.0.15.1)
Total 2 new migrations to be applied:
m000001_000000_item
m000002_000000_item_groups
Apply the above migrations? (yes|no) [no]:yes
*** applying m000001_000000_item
> create table items ...Exception 'yii\db\Exception' with message 'SQLSTATE[HY000]: General error: 1 table `items` already exists
Failed to prepare SQL: CREATE TABLE `items` (
...
Error Info:
Array
(
[0] => HY000
[1] => 1
[2] => table `items` already exists
)
Stack trace:
#0 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/db/Command.php(1070): yii\db\Command->prepare(false)
#1 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/db/sqlite/Command.php(32): yii\db\Command->execute()
#2 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/db/Migration.php(323): yii\db\sqlite\Command->execute()
#3 /home/mdaize/Projects/services/item-service/src/migrations/m000001_000000_item.php(53): yii\db\Migration->createTable('items', Array, NULL)
#4 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(725): m000001_000000_item->up()
#5 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(199): yii\console\controllers\BaseMigrateController->migrateUp('m000001_000000_...')
#6 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
#7 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#8 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#9 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/console/Controller.php(148): yii\base\Controller->runAction('', Array)
#10 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('', Array)
#11 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('migrate', Array)
#12 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('migrate', Array)
#13 /home/mdaize/Projects/services/item-service/src/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
#14 /home/mdaize/Projects/services/item-service/tests/bin/yii(28): yii\base\Application->run()
#15 {main}
- Check exit code with
echo $?
➜ echo $?
0
What's expected?
Exitcode should be 1
What do you get instead?
Exitcode returned at 0
Additional info
This was discovered when using a sqlite database during our local testing process using the following shell script:
#!/bin/bash
php tests/bin/yii migrate up --interactive=0
if [ $? -gt 0 ]; then
exit 1
fi
Other detailed information and stuff:
➜ cat tests/bin/yii
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
require(__DIR__ . '/../../src/vendor/autoload.php');
require(__DIR__ . '/../../src/vendor/yiisoft/yii2/Yii.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../src/config/console.php'),
[
'components' => [
'db' => require(__DIR__ . '/../config/test_db.php')
]
]
);
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
➜ cat /etc/fedora-release
Fedora release 27 (Twenty Seven)
➜ php --version
PHP 7.1.14 (cli) (built: Jan 30 2018 19:05:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.1.14, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
➜ composer info
behat/gherkin v4.5.1 Gherkin DSL parser for PHP 5.3
bower-asset/bootstrap v3.3.7
bower-asset/inputmask 3.3.11
bower-asset/jquery 3.2.1
bower-asset/punycode v1.3.2
bower-asset/typeahead.js v0.11.1
bower-asset/yii2-pjax 2.0.7.1
cebe/markdown 1.1.2 A super fast, highly extensible markdown parser for PHP
cilex/cilex 1.1.0 The PHP micro-framework for Command line tools based on the Symfony2 Components
cilex/console-service-provider 1.0.0 Console Service Provider
codeception/base 2.4.1 BDD-style testing framework
codeception/phpunit-wrapper 7.1.1 PHPUnit classes used by Codeception
codeception/specify 0.4.6 BDD code blocks for PHPUnit and Codeception
codeception/stub 1.0.2 Flexible Stub wrapper for PHPUnit's Mock Builder
codeception/verify 0.3.3 BDD assertion library for PHPUnit
container-interop/container-interop 1.2.0 Promoting the interoperability of container objects (DIC, SL, etc.)
doctrine/annotations v1.6.0 Docblock Annotations Parser
doctrine/instantiator 1.1.0 A small, lightweight utility to instantiate objects in PHP without invoking their construc...
doctrine/lexer v1.0.1 Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.
erusev/parsedown 1.7.1 Parser for Markdown.
ezyang/htmlpurifier v4.10.0 Standards compliant HTML filter written in PHP
fzaninotto/faker v1.7.1 Faker is a PHP library that generates fake data for you.
guzzlehttp/guzzle 6.3.3 Guzzle is a PHP HTTP client library
guzzlehttp/promises v1.3.1 Guzzle promises library
guzzlehttp/psr7 1.4.2 PSR-7 message implementation that also provides common utility methods
herrera-io/json 1.0.3 A library for simplifying JSON linting and validation.
herrera-io/phar-update 1.0.3 A library for self-updating Phars.
jms/metadata 1.6.0 Class/method/property metadata management in PHP
jms/parser-lib 1.0.0 A library for easily creating recursive-descent parsers.
jms/serializer 1.11.0 Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.
justinrainbow/json-schema 1.6.1 A library to validate a json schema.
kherge/version 1.0.1 A parsing and comparison library for semantic versioning.
monolog/monolog 1.23.0 Sends your logs to files, sockets, inboxes, databases and various web services
myclabs/deep-copy 1.7.0 Create deep copies (clones) of your objects
nikic/php-parser v1.4.1 A PHP parser written in PHP
pdepend/pdepend 2.5.0 Official version of pdepend to be handled with Composer
phar-io/manifest 1.0.1 Component for reading phar.io manifest information from a PHP Archive (PHAR)
phar-io/version 1.0.1 Library for handling version information and constraints
phpcollection/phpcollection 0.5.0 General-Purpose Collection Library for PHP
phpdocumentor/fileset 1.0.0 Fileset component for collecting a set of files given directories and file paths
phpdocumentor/graphviz 1.0.4
phpdocumentor/phpdocumentor v2.9.0 Documentation Generator for PHP
phpdocumentor/reflection 3.0.1 Reflection library to do Static Analysis for PHP Projects
phpdocumentor/reflection-docblock 2.0.5
phpoption/phpoption 1.5.0 Option Type for PHP
phpspec/php-diff v1.1.0 A comprehensive library for generating differences between two hashable objects (strings o...
phpspec/prophecy 1.7.6 Highly opinionated mocking framework for PHP 5.3+
phpunit/php-code-coverage 6.0.4 Library that provides collection, processing, and rendering functionality for PHP code cov...
phpunit/php-file-iterator 1.4.5 FilterIterator implementation that filters files based on a list of suffixes.
phpunit/php-text-template 1.2.1 Simple template engine.
phpunit/php-timer 2.0.0 Utility class for timing
phpunit/php-token-stream 3.0.0 Wrapper around PHP's tokenizer extension.
phpunit/phpunit 7.1.4 The PHP Unit Testing framework.
phpunit/phpunit-mock-objects 6.1.1 Mock Object library for PHPUnit
pimple/pimple v1.1.1 Pimple is a simple Dependency Injection Container for PHP 5.3
psr/cache 1.0.1 Common interface for caching libraries
psr/container 1.0.0 Common Container Interface (PHP FIG PSR-11)
psr/http-message 1.0.1 Common interface for HTTP messages
psr/log 1.0.2 Common interface for logging libraries
psr/simple-cache 1.0.1 Common interfaces for simple caching
sebastian/code-unit-reverse-lookup 1.0.1 Looks up which function or method a line of code belongs to
sebastian/comparator 2.1.3 Provides the functionality to compare PHP values for equality
sebastian/diff 3.0.0 Diff implementation
sebastian/environment 3.1.0 Provides functionality to handle HHVM/PHP environments
sebastian/exporter 3.1.0 Provides the functionality to export PHP variables for visualization
sebastian/global-state 2.0.0 Snapshotting of global state
sebastian/object-enumerator 3.0.3 Traverses array structures and object graphs to enumerate all referenced objects
sebastian/object-reflector 1.1.1 Allows reflection of object attributes, including inherited and non-public ones
sebastian/recursion-context 3.0.0 Provides functionality to recursively process PHP variables
sebastian/resource-operations 1.0.0 Provides a list of PHP built-in functions that operate on resources
sebastian/version 2.0.1 Library that helps with managing the version number of Git-hosted PHP projects
seld/jsonlint 1.7.1 JSON Linter
squizlabs/php_codesniffer 3.2.2 PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a define...
symfony/browser-kit v4.0.9 Symfony BrowserKit Component
symfony/config v2.8.39 Symfony Config Component
symfony/console v2.8.39 Symfony Console Component
symfony/css-selector v4.0.9 Symfony CssSelector Component
symfony/debug v3.0.9 Symfony Debug Component
symfony/dependency-injection v3.2.14 Symfony DependencyInjection Component
symfony/dom-crawler v4.0.9 Symfony DomCrawler Component
symfony/event-dispatcher v2.8.39 Symfony EventDispatcher Component
symfony/filesystem v3.0.9 Symfony Filesystem Component
symfony/finder v2.8.39 Symfony Finder Component
symfony/polyfill-mbstring v1.8.0 Symfony polyfill for the Mbstring extension
symfony/process v2.8.39 Symfony Process Component
symfony/stopwatch v2.8.39 Symfony Stopwatch Component
symfony/translation v3.0.9 Symfony Translation Component
symfony/validator v2.8.39 Symfony Validator Component
symfony/yaml v3.3.16 Symfony Yaml Component
theseer/tokenizer 1.1.0 A small library for converting tokenized PHP source code into XML and potentially other fo...
tuyakhov/yii2-json-api v0.1.6 Implementation of JSON API specification for the Yii framework
twig/twig v1.35.3 Twig, the flexible, fast, and secure template language for PHP
yiisoft/yii2 2.0.15.1 Yii PHP Framework Version 2
yiisoft/yii2-bootstrap 2.0.8 The Twitter Bootstrap extension for the Yii framework
yiisoft/yii2-composer 2.0.6 The composer plugin for Yii extension installer
yiisoft/yii2-debug 2.0.13 The debugger extension for the Yii framework
yiisoft/yii2-faker 2.0.4 Fixture generator. The Faker integration for the Yii framework.
yiisoft/yii2-gii 2.0.7 The Gii extension for the Yii framework
yiisoft/yii2-httpclient 2.0.6 HTTP client extension for the Yii framework
zendframework/zend-cache 2.8.2 Caching implementation with a variety of storage options, as well as codified caching stra...
zendframework/zend-config 2.6.0 provides a nested object property based user interface for accessing this configuration da...
zendframework/zend-eventmanager 3.2.1 Trigger and listen to events within a PHP application
zendframework/zend-filter 2.8.0 provides a set of commonly needed data filters
zendframework/zend-hydrator 1.1.0
zendframework/zend-i18n 2.8.0 Provide translations for your application, and filter and validate internationalized values
zendframework/zend-json 3.1.0 provides convenience methods for serializing native PHP to JSON and decoding JSON to nativ...
zendframework/zend-serializer 2.8.1 provides an adapter based interface to simply generate storable representation of PHP type...
zendframework/zend-servicemanager 2.7.10
zendframework/zend-stdlib 2.7.7
zetacomponents/base 1.9.1 The Base package provides the basic infrastructure that all packages rely on. Therefore ev...
zetacomponents/document 1.3.1 The Document components provides a general conversion framework for different semantic doc...