Closed ddebin closed 6 months ago
Are you using DBAL 3 or 4?
Are you using DBAL 3 or 4?
DBAL 4.x, it's more of a problem with doctrine/dbal
4
Return type switched from bool
to void
, I don't think we can make the interface cross compatible...
bindValue($param, $value, $type = Doctrine\DBAL\ParameterType::STRING): bool
bindValue(string|int $param, mixed $value, Doctrine\DBAL\ParameterType $type): void
We need to create another one, and this is probably not even the only BC that we need to handle.
We'll add support for DBAL v4; I can't give you a timeline at this point.
When creating a new symfony project with --webapp, composer.json adds "doctrine/orm:^3.0" to the requires section. I wish instead it were "^2.1||^3.0", and let composer figure out which version to use based on what the dependencies support.
That would help in this case, as well as for API Platform https://github.com/api-platform/core/issues/6150
Unfortunately, since Doctrine is an optional dependency of this package, we don't require it in composer.json
besides for development purposes, hence we have no way to prevent the installation of an unsupported version. This is one of the reasons for which I strongly believe that:
composer.json
@ste93cry What about declaring a conflict with the unsupported version, until it is supported?
@ste93cry What about declaring a conflict with the unsupported version, until it is supported?
That would prevent users to use the whole bundle if they use DBAL 4, which is an issue only if you enable tracing.
Could anyone point out how to disable tracing ? 🙂
You can disable tracing as a whole using:
sentry:
tracing:
enabled: false
or you can disable tracing specifically for DBAL using:
sentry:
tracing:
dbal:
enabled: false
Until resolved I solved that by going with orm 3.* but constraining dbal.
"doctrine/dbal": "3.*",
"doctrine/orm": "^3.0.0",
@ste93cry What about declaring a conflict with the unsupported version, until it is supported?
That would prevent users to use the whole bundle if they use DBAL 4, which is an issue only if you enable tracing.
@Jean85 Can't use the whole bundle with DBAL 4, even with tracing disabled.
Can't use the whole bundle with DBAL 4, even with tracing disabled.
Indeed, even with the whole bundle disabled, the application still fails with:
Fatal error: Declaration of Sentry\SentryBundle\Tracing\Doctrine\DBAL\TracingStatementForV3::bindValue($param, $value, $type = Doctrine\DBAL\ParameterType::STRING): bool must be compatible with Doctrine\DBAL\Driver\Statement::bindValue(string|int $param, mixed $value, Doctrine\DBAL\ParameterType $type): void in /app/vendor/sentry/sentry-symfony/src/Tracing/Doctrine/DBAL/TracingStatementForV3.php on line 20
I believe that at this point, a conflict
is the only viable solution until support for the newer version is worked on @Jean85
It is being worked on.
How do you use Sentry?
Sentry SaaS (sentry.io)
SDK version
3.6.0
Steps to reproduce
Install
"sentry/sentry-symfony": "^4.0"
along"doctrine/dbal": "^4.0"
Expected result
composer install
works with no errorActual result
composer install
(more specifically composer hookscript cache:clear
) crash with