[Bug]: DbalException An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '...' for key 'user_status_uid_ix'
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
Description
⚠️ This issue respects the following points: ⚠️
- This is a bug, not a question or a configuration/webserver/proxy issue.
- This issue is not already reported on Github OR Nextcloud Community Forum (I've searched it).
- Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
- I agree to follow Nextcloud's Code of Conduct.
Bug description
There's an error in the log:
DbalException An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'
Steps to reproduce
I'm not sure. I mainly use my nextcloud for the calendar.
Expected behavior
No error in log
Nextcloud Server version
30
Operating system
RHEL/CentOS
PHP engine version
PHP 8.3
Web server
Apache (supported)
Database engine version
MySQL
Is this bug present after an update or on a fresh install?
Fresh Nextcloud Server install
Are you using the Nextcloud Server Encryption module?
Encryption is Disabled
What user-backends are you using?
- Default user-backend (database)
- LDAP/ Active Directory
- SSO - SAML
- Other
Configuration report
{
"system": {
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"cloud.jendrik.eu"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "mysql",
"version": "30.0.6.2",
"overwrite.cli.url": "https:\/\/cloud.jendrik.eu",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbport": "",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"maintenance": false,
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_smtpmode": "sendmail",
"mail_sendmailmode": "pipe",
"htaccess.RewriteBase": "\/",
"memcache.local": "\\OC\\Memcache\\APCu",
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"port": "0",
"timeout": "1.5"
},
"filelocking.enabled": "true",
"memcache.locking": "\\OC\\Memcache\\Redis",
"memcache.distributed": "\\OC\\Memcache\\Redis",
"default_phone_region": "DE",
"maintenance_window_start": 0,
"skeletondirectory": ""
}
}
List of activated Apps
Enabled:
- activity: 3.0.0
- bruteforcesettings: 3.0.0
- calendar: 5.1.3
- circles: 30.0.0
- cloud_federation_api: 1.13.0
- contactsinteraction: 1.11.0
- dashboard: 7.10.0
- dav: 1.31.1
- federatedfilesharing: 1.20.0
- federation: 1.20.0
- files: 2.2.0
- files_downloadlimit: 3.0.0
- files_pdfviewer: 3.0.0
- files_sharing: 1.22.0
- files_trashbin: 1.20.1
- files_versions: 1.23.0
- firstrunwizard: 3.0.0
- logreader: 3.0.0
- lookup_server_connector: 1.18.0
- nextcloud_announcements: 2.0.0
- notifications: 3.0.0
- oauth2: 1.18.1
- password_policy: 2.0.0
- privacy: 2.0.0
- provisioning_api: 1.20.0
- related_resources: 1.5.0
- serverinfo: 2.0.0
- settings: 1.13.0
- text: 4.1.0
- theming: 2.6.0
- twofactor_backupcodes: 1.19.0
- updatenotification: 1.20.0
- user_status: 1.10.0
- viewer: 3.0.0
- workflowengine: 2.12.0
Disabled:
- admin_audit: 1.20.0
- app_api: 4.0.6 (installed 4.0.6)
- comments: 1.20.1 (installed 1.20.1)
- encryption: 2.18.0
- files_external: 1.22.0
- files_reminders: 1.3.0 (installed 1.3.0)
- photos: 3.0.2 (installed 3.0.2)
- recommendations: 3.0.0 (installed 3.0.0)
- sharebymail: 1.20.0 (installed 1.20.0)
- support: 2.0.0 (installed 2.0.0)
- survey_client: 2.0.0 (installed 2.0.0)
- suspicious_login: 8.0.0
- systemtags: 1.20.0 (installed 1.20.0)
- twofactor_nextcloud_notification: 4.0.0
- twofactor_totp: 12.0.0-dev
- user_ldap: 1.21.0
- weather_status: 1.10.0 (installed 1.10.0)
- webhook_listeners: 1.1.0-dev (installed 1.1.0-dev)
Nextcloud Signing status
No errors have been found.
Nextcloud Logs
{
"reqId": "Z8WGuUcpXdUL7x_IvkMa_wAAAM4",
"level": 3,
"time": "2025-03-03T10:38:49+00:00",
"remoteAddr": "2a02:560:558b:c300:d9df:dd13:2829:5c75",
"user": "jonas",
"app": "no app in context",
"method": "PUT",
"url": "/ocs/v2.php/apps/user_status/api/v1/heartbeat?format=json",
"message": "An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0",
"version": "30.0.6.2",
"exception": {
"Exception": "OC\\DB\\Exceptions\\DbalException",
"Message": "An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'",
"Code": 1062,
"Trace": [
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/ConnectionAdapter.php",
"line": 69,
"function": "wrap",
"class": "OC\\DB\\Exceptions\\DbalException",
"type": "::",
"args": [
{
"__class__": "Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/QueryBuilder/QueryBuilder.php",
"line": 306,
"function": "executeStatement",
"class": "OC\\DB\\ConnectionAdapter",
"type": "->",
"args": [
"INSERT INTO `*PREFIX*user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/public/AppFramework/Db/QBMapper.php",
"line": 115,
"function": "executeStatement",
"class": "OC\\DB\\QueryBuilder\\QueryBuilder",
"type": "->",
"args": []
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Service/StatusService.php",
"line": 316,
"function": "insert",
"class": "OCP\\AppFramework\\Db\\QBMapper",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Db\\UserStatus",
"id": null,
"userId": "jonas",
"status": "away",
"statusTimestamp": 1740998329,
"isUserDefined": true,
"messageId": "meeting",
"customIcon": null,
"customMessage": null,
"clearAt": null,
"isBackup": false
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/dav/lib/CalDAV/Status/StatusService.php",
"line": 140,
"function": "setUserStatus",
"class": "OCA\\UserStatus\\Service\\StatusService",
"type": "->",
"args": [
"jonas",
"away",
"meeting",
true
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Listener/UserLiveStatusListener.php",
"line": 57,
"function": "processCalendarStatus",
"class": "OCA\\DAV\\CalDAV\\Status\\StatusService",
"type": "->",
"args": [
"jonas"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/ServiceEventListener.php",
"line": 68,
"function": "handle",
"class": "OCA\\UserStatus\\Listener\\UserLiveStatusListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 220,
"function": "__invoke",
"class": "OC\\EventDispatcher\\ServiceEventListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "Symfony\\Component\\EventDispatcher\\EventDispatcher"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 56,
"function": "callListeners",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
[
{
"__class__": "Closure"
}
],
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 67,
"function": "dispatch",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 79,
"function": "dispatch",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Controller/HeartbeatController.php",
"line": 84,
"function": "dispatchTyped",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 208,
"function": "heartbeat",
"class": "OCA\\UserStatus\\Controller\\HeartbeatController",
"type": "->",
"args": [
"online"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 114,
"function": "executeController",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/App.php",
"line": 161,
"function": "dispatch",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/Route/Router.php",
"line": 302,
"function": "main",
"class": "OC\\AppFramework\\App",
"type": "::",
"args": [
"OCA\\UserStatus\\Controller\\HeartbeatController",
"heartbeat",
{
"__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
},
{
"_route": "ocs.user_status.heartbeat.heartbeat"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v1.php",
"line": 43,
"function": "match",
"class": "OC\\Route\\Router",
"type": "->",
"args": [
"/ocsapp/apps/user_status/api/v1/heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v2.php",
"line": 7,
"args": [
"/var/www/virtual/jendrik/SERVER/ocs/v1.php"
],
"function": "require_once"
}
],
"File": "/var/www/virtual/jendrik/SERVER/lib/private/DB/Exceptions/DbalException.php",
"Line": 54,
"Previous": {
"Exception": "Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException",
"Message": "An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'",
"Code": 1062,
"Trace": [
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connection.php",
"line": 1976,
"function": "convert",
"class": "Doctrine\\DBAL\\Driver\\API\\MySQL\\ExceptionConverter",
"type": "->",
"args": [
{
"__class__": "Doctrine\\DBAL\\Driver\\PDO\\Exception"
},
{
"__class__": "Doctrine\\DBAL\\Query"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connection.php",
"line": 1918,
"function": "handleDriverException",
"class": "Doctrine\\DBAL\\Connection",
"type": "->",
"args": [
{
"__class__": "Doctrine\\DBAL\\Driver\\PDO\\Exception"
},
{
"__class__": "Doctrine\\DBAL\\Query"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connection.php",
"line": 1218,
"function": "convertExceptionDuringQuery",
"class": "Doctrine\\DBAL\\Connection",
"type": "->",
"args": [
{
"__class__": "Doctrine\\DBAL\\Driver\\PDO\\Exception"
},
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(?, ?, ?, ?, ?, ?, ?)",
[
"jonas",
"away",
1740998329,
true,
false,
"And 2 more entries, set log level to debug to see all entries"
],
[
2,
2,
1,
"boolean",
"boolean",
"And 2 more entries, set log level to debug to see all entries"
]
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php",
"line": 292,
"function": "executeStatement",
"class": "Doctrine\\DBAL\\Connection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(?, ?, ?, ?, ?, ?, ?)",
[
"jonas",
"away",
1740998329,
true,
false,
"And 2 more entries, set log level to debug to see all entries"
],
[
2,
2,
1,
"boolean",
"boolean",
"And 2 more entries, set log level to debug to see all entries"
]
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/Connection.php",
"line": 462,
"function": "executeStatement",
"class": "Doctrine\\DBAL\\Connections\\PrimaryReadReplicaConnection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/ConnectionAdapter.php",
"line": 67,
"function": "executeStatement",
"class": "OC\\DB\\Connection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/QueryBuilder/QueryBuilder.php",
"line": 306,
"function": "executeStatement",
"class": "OC\\DB\\ConnectionAdapter",
"type": "->",
"args": [
"INSERT INTO `*PREFIX*user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/public/AppFramework/Db/QBMapper.php",
"line": 115,
"function": "executeStatement",
"class": "OC\\DB\\QueryBuilder\\QueryBuilder",
"type": "->",
"args": []
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Service/StatusService.php",
"line": 316,
"function": "insert",
"class": "OCP\\AppFramework\\Db\\QBMapper",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Db\\UserStatus",
"id": null,
"userId": "jonas",
"status": "away",
"statusTimestamp": 1740998329,
"isUserDefined": true,
"messageId": "meeting",
"customIcon": null,
"customMessage": null,
"clearAt": null,
"isBackup": false
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/dav/lib/CalDAV/Status/StatusService.php",
"line": 140,
"function": "setUserStatus",
"class": "OCA\\UserStatus\\Service\\StatusService",
"type": "->",
"args": [
"jonas",
"away",
"meeting",
true
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Listener/UserLiveStatusListener.php",
"line": 57,
"function": "processCalendarStatus",
"class": "OCA\\DAV\\CalDAV\\Status\\StatusService",
"type": "->",
"args": [
"jonas"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/ServiceEventListener.php",
"line": 68,
"function": "handle",
"class": "OCA\\UserStatus\\Listener\\UserLiveStatusListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 220,
"function": "__invoke",
"class": "OC\\EventDispatcher\\ServiceEventListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "Symfony\\Component\\EventDispatcher\\EventDispatcher"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 56,
"function": "callListeners",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
[
{
"__class__": "Closure"
}
],
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 67,
"function": "dispatch",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 79,
"function": "dispatch",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Controller/HeartbeatController.php",
"line": 84,
"function": "dispatchTyped",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 208,
"function": "heartbeat",
"class": "OCA\\UserStatus\\Controller\\HeartbeatController",
"type": "->",
"args": [
"online"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 114,
"function": "executeController",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/App.php",
"line": 161,
"function": "dispatch",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/Route/Router.php",
"line": 302,
"function": "main",
"class": "OC\\AppFramework\\App",
"type": "::",
"args": [
"OCA\\UserStatus\\Controller\\HeartbeatController",
"heartbeat",
{
"__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
},
{
"_route": "ocs.user_status.heartbeat.heartbeat"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v1.php",
"line": 43,
"function": "match",
"class": "OC\\Route\\Router",
"type": "->",
"args": [
"/ocsapp/apps/user_status/api/v1/heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v2.php",
"line": 7,
"args": [
"/var/www/virtual/jendrik/SERVER/ocs/v1.php"
],
"function": "require_once"
}
],
"File": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php",
"Line": 62,
"Previous": {
"Exception": "Doctrine\\DBAL\\Driver\\PDO\\Exception",
"Message": "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'",
"Code": 1062,
"Trace": [
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Driver/PDO/Statement.php",
"line": 132,
"function": "new",
"class": "Doctrine\\DBAL\\Driver\\PDO\\Exception",
"type": "::",
"args": [
{
"__class__": "PDOException",
"errorInfo": [
"23000",
1062,
"Duplicate entry 'jonas' for key 'user_status_uid_ix'"
]
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connection.php",
"line": 1212,
"function": "execute",
"class": "Doctrine\\DBAL\\Driver\\PDO\\Statement",
"type": "->",
"args": []
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php",
"line": 292,
"function": "executeStatement",
"class": "Doctrine\\DBAL\\Connection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(?, ?, ?, ?, ?, ?, ?)",
[
"jonas",
"away",
1740998329,
true,
false,
"And 2 more entries, set log level to debug to see all entries"
],
[
2,
2,
1,
"boolean",
"boolean",
"And 2 more entries, set log level to debug to see all entries"
]
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/Connection.php",
"line": 462,
"function": "executeStatement",
"class": "Doctrine\\DBAL\\Connections\\PrimaryReadReplicaConnection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/ConnectionAdapter.php",
"line": 67,
"function": "executeStatement",
"class": "OC\\DB\\Connection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/QueryBuilder/QueryBuilder.php",
"line": 306,
"function": "executeStatement",
"class": "OC\\DB\\ConnectionAdapter",
"type": "->",
"args": [
"INSERT INTO `*PREFIX*user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/public/AppFramework/Db/QBMapper.php",
"line": 115,
"function": "executeStatement",
"class": "OC\\DB\\QueryBuilder\\QueryBuilder",
"type": "->",
"args": []
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Service/StatusService.php",
"line": 316,
"function": "insert",
"class": "OCP\\AppFramework\\Db\\QBMapper",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Db\\UserStatus",
"id": null,
"userId": "jonas",
"status": "away",
"statusTimestamp": 1740998329,
"isUserDefined": true,
"messageId": "meeting",
"customIcon": null,
"customMessage": null,
"clearAt": null,
"isBackup": false
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/dav/lib/CalDAV/Status/StatusService.php",
"line": 140,
"function": "setUserStatus",
"class": "OCA\\UserStatus\\Service\\StatusService",
"type": "->",
"args": [
"jonas",
"away",
"meeting",
true
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Listener/UserLiveStatusListener.php",
"line": 57,
"function": "processCalendarStatus",
"class": "OCA\\DAV\\CalDAV\\Status\\StatusService",
"type": "->",
"args": [
"jonas"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/ServiceEventListener.php",
"line": 68,
"function": "handle",
"class": "OCA\\UserStatus\\Listener\\UserLiveStatusListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 220,
"function": "__invoke",
"class": "OC\\EventDispatcher\\ServiceEventListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "Symfony\\Component\\EventDispatcher\\EventDispatcher"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 56,
"function": "callListeners",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
[
{
"__class__": "Closure"
}
],
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 67,
"function": "dispatch",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 79,
"function": "dispatch",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Controller/HeartbeatController.php",
"line": 84,
"function": "dispatchTyped",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 208,
"function": "heartbeat",
"class": "OCA\\UserStatus\\Controller\\HeartbeatController",
"type": "->",
"args": [
"online"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 114,
"function": "executeController",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/App.php",
"line": 161,
"function": "dispatch",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/Route/Router.php",
"line": 302,
"function": "main",
"class": "OC\\AppFramework\\App",
"type": "::",
"args": [
"OCA\\UserStatus\\Controller\\HeartbeatController",
"heartbeat",
{
"__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
},
{
"_route": "ocs.user_status.heartbeat.heartbeat"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v1.php",
"line": 43,
"function": "match",
"class": "OC\\Route\\Router",
"type": "->",
"args": [
"/ocsapp/apps/user_status/api/v1/heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v2.php",
"line": 7,
"args": [
"/var/www/virtual/jendrik/SERVER/ocs/v1.php"
],
"function": "require_once"
}
],
"File": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Driver/PDO/Exception.php",
"Line": 24,
"Previous": {
"Exception": "PDOException",
"Message": "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'",
"Code": "23000",
"Trace": [
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Driver/PDO/Statement.php",
"line": 130,
"function": "execute",
"class": "PDOStatement",
"type": "->",
"args": [
null
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connection.php",
"line": 1212,
"function": "execute",
"class": "Doctrine\\DBAL\\Driver\\PDO\\Statement",
"type": "->",
"args": []
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php",
"line": 292,
"function": "executeStatement",
"class": "Doctrine\\DBAL\\Connection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(?, ?, ?, ?, ?, ?, ?)",
[
"jonas",
"away",
1740998329,
true,
false,
"And 2 more entries, set log level to debug to see all entries"
],
[
2,
2,
1,
"boolean",
"boolean",
"And 2 more entries, set log level to debug to see all entries"
]
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/Connection.php",
"line": 462,
"function": "executeStatement",
"class": "Doctrine\\DBAL\\Connections\\PrimaryReadReplicaConnection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/ConnectionAdapter.php",
"line": 67,
"function": "executeStatement",
"class": "OC\\DB\\Connection",
"type": "->",
"args": [
"INSERT INTO `oc_user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/DB/QueryBuilder/QueryBuilder.php",
"line": 306,
"function": "executeStatement",
"class": "OC\\DB\\ConnectionAdapter",
"type": "->",
"args": [
"INSERT INTO `*PREFIX*user_status` (`user_id`, `status`, `status_timestamp`, `is_user_defined`, `is_backup`, `message_id`, `status_message_timestamp`) VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7)",
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": "jonas",
"dcValue2": "away",
"dcValue3": 1740998329,
"dcValue4": true,
"dcValue5": false
},
{
"0": "And 2 more entries, set log level to debug to see all entries",
"dcValue1": 2,
"dcValue2": 2,
"dcValue3": 1,
"dcValue4": "boolean",
"dcValue5": "boolean"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/public/AppFramework/Db/QBMapper.php",
"line": 115,
"function": "executeStatement",
"class": "OC\\DB\\QueryBuilder\\QueryBuilder",
"type": "->",
"args": []
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Service/StatusService.php",
"line": 316,
"function": "insert",
"class": "OCP\\AppFramework\\Db\\QBMapper",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Db\\UserStatus",
"id": null,
"userId": "jonas",
"status": "away",
"statusTimestamp": 1740998329,
"isUserDefined": true,
"messageId": "meeting",
"customIcon": null,
"customMessage": null,
"clearAt": null,
"isBackup": false
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/dav/lib/CalDAV/Status/StatusService.php",
"line": 140,
"function": "setUserStatus",
"class": "OCA\\UserStatus\\Service\\StatusService",
"type": "->",
"args": [
"jonas",
"away",
"meeting",
true
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Listener/UserLiveStatusListener.php",
"line": 57,
"function": "processCalendarStatus",
"class": "OCA\\DAV\\CalDAV\\Status\\StatusService",
"type": "->",
"args": [
"jonas"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/ServiceEventListener.php",
"line": 68,
"function": "handle",
"class": "OCA\\UserStatus\\Listener\\UserLiveStatusListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 220,
"function": "__invoke",
"class": "OC\\EventDispatcher\\ServiceEventListener",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "Symfony\\Component\\EventDispatcher\\EventDispatcher"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
"line": 56,
"function": "callListeners",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
[
{
"__class__": "Closure"
}
],
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 67,
"function": "dispatch",
"class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
},
"OCP\\User\\Events\\UserLiveStatusEvent"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/EventDispatcher/EventDispatcher.php",
"line": 79,
"function": "dispatch",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
"OCP\\User\\Events\\UserLiveStatusEvent",
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/apps/user_status/lib/Controller/HeartbeatController.php",
"line": 84,
"function": "dispatchTyped",
"class": "OC\\EventDispatcher\\EventDispatcher",
"type": "->",
"args": [
{
"__class__": "OCP\\User\\Events\\UserLiveStatusEvent"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 208,
"function": "heartbeat",
"class": "OCA\\UserStatus\\Controller\\HeartbeatController",
"type": "->",
"args": [
"online"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/Http/Dispatcher.php",
"line": 114,
"function": "executeController",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/AppFramework/App.php",
"line": 161,
"function": "dispatch",
"class": "OC\\AppFramework\\Http\\Dispatcher",
"type": "->",
"args": [
{
"__class__": "OCA\\UserStatus\\Controller\\HeartbeatController"
},
"heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/lib/private/Route/Router.php",
"line": 302,
"function": "main",
"class": "OC\\AppFramework\\App",
"type": "::",
"args": [
"OCA\\UserStatus\\Controller\\HeartbeatController",
"heartbeat",
{
"__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
},
{
"_route": "ocs.user_status.heartbeat.heartbeat"
}
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v1.php",
"line": 43,
"function": "match",
"class": "OC\\Route\\Router",
"type": "->",
"args": [
"/ocsapp/apps/user_status/api/v1/heartbeat"
]
},
{
"file": "/var/www/virtual/jendrik/SERVER/ocs/v2.php",
"line": 7,
"args": [
"/var/www/virtual/jendrik/SERVER/ocs/v1.php"
],
"function": "require_once"
}
],
"File": "/var/www/virtual/jendrik/SERVER/3rdparty/doctrine/dbal/src/Driver/PDO/Statement.php",
"Line": 130
}
}
},
"message": "An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'",
"exception": [],
"CustomMessage": "An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jonas' for key 'user_status_uid_ix'"
},
"id": "67ce9e0367f99"
}
Additional info
No response
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 by tracing the heartbeat flow from apps/user_status/lib/Controller/HeartbeatController.php through apps/user_status/lib/Listener/UserLiveStatusListener.php and apps/user_status/lib/Service/StatusService.php, using the reported INSERT and unique key as the entry point. Determine why the existing user status is inserted again during calendar status processing; done means the duplicate-entry error no longer occurs and the affected flow is covered by appropriate verification.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- mysql, php
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100