Facing this problem when running database migration with :
laravel/framework
^9.0doctrine/dbal
4.2.1I can't downgrade/upgrade my doctrine/dbal
version due to a conflict with carbon-doctrine-types
(which comes from laravel/framework
requiring nesbot/carbon
requiring carbonphp/carbon-doctrine-types
).
Apparently, the ::connect
method signature changed from Laravel 8 to Laravel 9, which I though was causing the error :
connect(array $params, string|null $username = null, string|null $password = null, array $driverOptions = [])
connect(array $params)
Complete composer.json
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"24slides/laravel-saml2": "^2.0",
"barryvdh/laravel-dompdf": "^3.0.0",
"doctrine/dbal": "4.2.1",
"fideloper/proxy": "^4.0",
"laravel/framework": "^9.0",
"laravel/helpers": "^1.6",
"laravel/tinker": "^2.0",
"laravel/ui": "^3.0"
},
"require-dev": {
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "^9.0",
"symfony/thanks": "^1.0"
},
"autoload": {
"classmap": [
"database/seeders",
"database/factories"
],
"psr-4": {
"App\\": "app/",
"OneLogin\\Saml2\\": "repositories/onelogin/php-saml/src/Saml2/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": [
]
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"allow-plugins": {
"kylekatarnls/update-helper": true,
"symfony/thanks": true
}
}
}
Complete error when running php artisan migrate
:
INFO Running migrations.
2024_07_18_110456_delete_some_column PHP Fatal error: Declaration of Illuminate\Database\PDO\Concerns\ConnectsToDatabase::connect(array $params, $username = null, $password = null, array $driverOptions = []) must be compatible with Doctrine\DBAL\Driver::connect(array $params): Doctrine\DBAL\Driver\Connection in C:\Users\g64882.ZEPRODBUR\Desktop\ykq\vendor\laravel\framework\src\Illuminate\Database\PDO\Concerns\ConnectsToDatabase.php on line 22
[2024-11-14 10:10:54] ${ENVIRONMENT}.ERROR: Declaration of Illuminate\Database\PDO\Concerns\ConnectsToDatabase::connect(array $params, $username = null, $password = null, array $driverOptions = []) must be compatible with
Doctrine\DBAL\Driver::connect(array $params): Doctrine\DBAL\Driver\Connection {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Declaration of Illuminate\\Database\\PDO\\Concerns\\ConnectsToDatabase::connect(array $params, $username = null, $password = null, array $driverOptions = []) must be compatible with Doctrine\\DBAL\\Driver::connect(array $params): Doctrine\\DBAL\\Driver\\Connection at C:\\Users\\g64882.ZEPRODBUR\\Desktop\\ykq\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\PDO\\Concerns\\ConnectsToDatabase.php:22)
[stacktrace]
#0 {main}
"}
In ConnectsToDatabase.php line 22:
Declaration of Illuminate\Database\PDO\Concerns\ConnectsToDatabase::connect(array $params, $username = nul
l, $password = null, array $driverOptions = []) must be compatible with Doctrine\DBAL\Driver::connect(arra
y $params): Doctrine\DBAL\Driver\Connection
I downgraded to Laravel 8, but still has the error (and it's even more weird now that the 2 methods with the same signature seems incompatible ?)
Complete composer.json
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"24slides/laravel-saml2": "^2.0",
"barryvdh/laravel-dompdf": "^2.2.0",
"doctrine/dbal": "4.2.1",
"fideloper/proxy": "^4.0",
"laravel/framework": "^8.0",
"laravel/helpers": "^1.6",
"laravel/tinker": "^2.0",
"laravel/ui": "^3.0"
},
"require-dev": {
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "^9.0",
"symfony/thanks": "^1.0"
},
"autoload": {
"classmap": [
"database/seeders",
"database/factories"
],
"psr-4": {
"App\\": "app/",
"OneLogin\\Saml2\\": "repositories/onelogin/php-saml/src/Saml2/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": [
]
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"allow-plugins": {
"kylekatarnls/update-helper": true,
"symfony/thanks": true
}
}
}
Complete error when running php artisan migrate
:
Migrating: 2024_07_18_110456_delete_some_column
PHP Fatal error: Declaration of Illuminate\Database\PDO\Concerns\ConnectsToDatabase::connect(array $params) must be compatible with Doctrine\DBAL\Driver::connect(array $params): Doctrine\DBAL\Driver\Connection in C:\Users\g64882.ZEPRODBUR\Desktop\ykq\vendor\laravel\framework\src\Illuminate\Database\PDO\Concerns\ConnectsToDatabase.php on line 19
[2024-11-14 10:28:57] ${ENVIRONMENT}.ERROR: Declaration of Illuminate\Database\PDO\Concerns\ConnectsToDatabase::connect(array $params) must be compatible with Doctrine\DBAL\Driver::connect(array $params): Doctrine\DBAL\Driver\Connection {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Declaration of Illuminate\\Database\\PDO\\Concerns\\ConnectsToDatabase::connect(array $params) must be compatible with Doctrine\\DBAL\\Driver::connect(array $params): Doctrine\\DBAL\\Driver\\Connection at C:\\Users\\g64882.ZEPRODBUR\\Desktop\\ykq\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\PDO\\Concerns\\ConnectsToDatabase.php:19)
[stacktrace]
#0 {main}
"}
In ConnectsToDatabase.php line 19:
Declaration of Illuminate\Database\PDO\Concerns\ConnectsToDatabase::connect(array $params) must be compati
ble with Doctrine\DBAL\Driver::connect(array $params): Doctrine\DBAL\Driver\Connection