yii\db\command execute() don't handle errors on multiple queries
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 216
- Forks
- 51
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 2
Description
What steps will reproduce the problem?
Try to import db schema (from mysqldump or PhpMyAdmin schema export) with some error on non-first query. In example, change "int" column type in some table to "intFOO" to cause mysql error.
Schema:
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `auth_assignment`;
CREATE TABLE `auth_assignment` (
`item_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`user_id` intFOO(10) UNSIGNED NOT NULL,
`created_at` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Example code (console action):
public function actionReset()
{
$schemaFile = 'some/path/schema.sql';
try {
$command = Yii::$app->db->createCommand(file_get_contents($schemaFile));
$command->execute();
Console::output('Schema imported.');
return self::EXIT_CODE_NORMAL;
} catch (\Exception $e) {
Console::error($e->getMessage());
}
return self::EXIT_CODE_ERROR;
}
What is the expected result?
Execution ends with proper exception.
What do you get instead?
"Schema imported." on stdout - no exception thrown, or error reported.
Additional info
Read this question and approved answer: How to check if db execute sql fails?
I believe that Yii should handle this case?
| Q | A |
|---|---|
| Yii version | 2.0.12 |
| PHP version | 7.1.x |
| Operating system | Kubuntu 17.04 |
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at yii\db\Command::execute() and reproduce the issue with the provided schema, changing the column type to intFOO. Trace how multiple SQL statements report failures, then verify that an error in a later query produces an exception instead of printing “Schema imported.”
Written by the indexing model from the issue text.
Assessment
- Tech stack
- mysql, php, sql
- Domain
- database
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100