Errors with Deck app corrupted database entry

Hello, I recently installed the Deck app which worked great, but I entered one time a date that was not real on a card (I don’t know how it let me do this btw) and since then the app sends errors each 15 minutes and I don’t know how I could get rid of it… I tried to uninstall the app but it does not fix the broken database entry.

Here is the error messages :

{"reqId":"0S21Yzi3xCEKZhBOTtfw","level":3,"time":"2024-01-28T15:00:03+00:00","remoteAddr":"","user":"--","app":"core","method":"","url":"--","message":"Error while running background job (class: OCA\\Deck\\Cron\\CardDescriptionActivity, arguments: )","userAgent":"--","version":"28.0.1.1","data":{"app":"core","exception":"{\"class\":\"Exception\",\"message\":\"Failed to parse time string (20232-01-15 07:00:00) at position 12 (0): Double time specification\",\"code\":0,\"file\":\"/var/www/html/lib/public/AppFramework/Db/Entity.php:126\",\"trace\":\"#0 /var/www/html/lib/public/AppFramework/Db/Entity.php(126): DateTime->__construct('20232-01-15 07:...')\\n#1 /var/www/html/lib/public/AppFramework/Db/Entity.php(167): OCP\\AppFramework\\Db\\Entity->setter('duedate', Array)\\n#2 /var/www/html/custom_apps/deck/lib/Db/RelationalEntity.php(147): OCP\\AppFramework\\Db\\Entity->__call('setDuedate', Array)\\n#3 /var/www/html/lib/public/AppFramework/Db/Entity.php(75): OCA\\Deck\\Db\\RelationalEntity->__call('setDuedate', Array)\\n#4 /var/www/html/lib/public/AppFramework/Db/QBMapper.php(321): OCP\\AppFramework\\Db\\Entity::fromRow(Array)\\n#5 /var/www/html/lib/public/AppFramework/Db/QBMapper.php(339): OCP\\AppFramework\\Db\\QBMapper->mapRowToEntity(Array)\\n#6 /var/www/html/custom_apps/deck/lib/Db/CardMapper.php(313): OCP\\AppFramework\\Db\\QBMapper->findEntities(Object(OC\\DB\\QueryBuilder\\QueryBuilder))\\n#7 /var/www/html/custom_apps/deck/lib/Cron/CardDescriptionActivity.php(50): OCA\\Deck\\Db\\CardMapper->findUnexposedDescriptionChances()\\n#8 /var/www/html/lib/public/BackgroundJob/Job.php(81): OCA\\Deck\\Cron\\CardDescriptionActivity->run(NULL)\\n#9 /var/www/html/lib/public/BackgroundJob/Job.php(67): OCP\\BackgroundJob\\Job->start(Object(OC\\BackgroundJob\\JobList))\\n#10 /var/www/html/cron.php(152): OCP\\BackgroundJob\\Job->execute(Object(OC\\BackgroundJob\\JobList), Object(OC\\Log))\\n#11 {main}\"}"},"id":"65b66dd987bbe"}

I also executed the occ files:scan and cleanup which did not fix the issue.

Is there anything I can do ? Thanks a lot for your help.

I think i have the same issue.

From nextlcoud.log

{"reqId":"lV0GBQDX5x79gBmBAy86","level":3,"time":"2024-02-28T10:05:01+00:00","remoteAddr":"","user":"--","app":"core","method":"","url":"--","message":"Error while running background job (class: OCA\\Deck\\Cron\\CardDescriptionActivity, arguments: )","userAgent":"--","version":"28.0.2.5","data":{"app":"core","exception":"{\"class\":\"Exception\",\"message\":\"Failed to parse time string (12023-03-04 07:00:00) at position 12 (0): Double time specification\",\"code\":0,\"file\":\"/var/www/nextcloud/lib/public/AppFramework/Db/Entity.php:126\",\"trace\":\"#0 /var/www/nextcloud/lib/public/AppFramework/Db/Entity.php(126): DateTime->__construct()\\n#1 /var/www/nextcloud/lib/public/AppFramework/Db/Entity.php(167): OCP\\AppFramework\\Db\\Entity->setter()\\n#2 /var/www/nextcloud/apps/deck/lib/Db/RelationalEntity.php(147): OCP\\AppFramework\\Db\\Entity->__call()\\n#3 /var/www/nextcloud/lib/public/AppFramework/Db/Entity.php(75): OCA\\Deck\\Db\\RelationalEntity->__call()\\n#4 /var/www/nextcloud/lib/public/AppFramework/Db/QBMapper.php(321): OCP\\AppFramework\\Db\\Entity::fromRow()\\n#5 /var/www/nextcloud/lib/public/AppFramework/Db/QBMapper.php(339): OCP\\AppFramework\\Db\\QBMapper->mapRowToEntity()\\n#6 /var/www/nextcloud/apps/deck/lib/Db/CardMapper.php(313): OCP\\AppFramework\\Db\\QBMapper->findEntities()\\n#7 /var/www/nextcloud/apps/deck/lib/Cron/CardDescriptionActivity.php(50): OCA\\Deck\\Db\\CardMapper->findUnexposedDescriptionChances()\\n#8 /var/www/nextcloud/lib/public/BackgroundJob/Job.php(81): OCA\\Deck\\Cron\\CardDescriptionActivity->run()\\n#9 /var/www/nextcloud/lib/public/BackgroundJob/Job.php(67): OCP\\BackgroundJob\\Job->start()\\n#10 /var/www/nextcloud/cron.php(152): OCP\\BackgroundJob\\Job->execute()\\n#11 {main}\"}"}}

Nexcloud Version 28.0.2

Possibly try occ maintenance:repair and occ files:scan-app-data.

Did the card end up in Details → Deleted items ?

Hi user103773,

thank you for your help. Ive tried the following commands:

occ files:scan-app-data

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 1312    | 1407  | 00:00:03     |
+---------+-------+--------------+

occ maintenance:repair

 - Repair MySQL collation
     - Not a mysql database -> nothing to do
 - Repair mime types
 - Clean tags and favorites
     - 0 tags of deleted users have been removed.
     - 0 tags for delete files have been removed.
     - 0 tag entries for deleted tags have been removed.
     - 0 tags with no entries have been removed.
 - Repair invalid shares
 - Move .step file of updater to backup location
 - Add move avatar background job
     - Add background job
 - Add preview cleanup background jobs
 - Migrate oauth2_clients table to nextcloud schema
     - Update the oauth2_access_tokens table schema.
     - Update the oauth2_clients table schema.
     - Delete clients (and their related access tokens) with the redirect_uri starting with oc:// or ending with *
 - Fix potential broken mount points
     - No mounts updated
 - Repair language codes
 - Add log rotate job
 - Clear frontend caches
     - Image cache cleared
     - JS cache cleared
 - Clear every generated avatar
 - Add preview background cleanup job
 - Queue a one-time job to cleanup old backups of the updater
 - Cleanup invalid photocache files for carddav
 - Add background job to cleanup login flow v2 tokens
 - Remove potentially over exposing share links
     - No need to remove link shares.
 - Clear access cache of projects
 - Reset generated avatar flag
 - Keep legacy encryption enabled
 - Check encryption key format
 - Remove old dashboard app config data
 - Add job to cleanup the bruteforce entries
 - Queue a one-time job to check for user uploaded certificates
 - Repair DAV shares
 - Add background job to set the lookup server share state for users
 - Add token cleanup job
 - Clean up abandoned apps
 - Add possibly missing system config
 - Add AI tasks cleanup job
 - Queue a job to generate metadata
 - Upgrading Circles App
 - Fix component of birthday calendars
     - 1 birthday calendars updated.
 - Regenerating birthday calendars to use new icons and fix old birthday events without year
     - Adding background jobs to regenerate birthday calendar
 - Fix broken values of calendar objects
    0 [->--------------------------]
 - Registering building of calendar search index as background job
     - Add background job
 - Register building of social profile search index as background job
     - Add background job
 - Registering background jobs to update cache for webcal calendars
     - Added 0 background jobs to update webcal calendars
 - Registering building of calendar reminder index as background job
     - Add background job
 - Clean up orphan event and contact data
     - 0 events without a calendar have been cleaned up
     - 0 properties without an events have been cleaned up
     - 0 changes without a calendar have been cleaned up
     - 0 cached events without a calendar subscription have been cleaned up
     - 0 changes without a calendar subscription have been cleaned up
     - 0 contacts without an addressbook have been cleaned up
     - 0 properties without a contact have been cleaned up
     - 0 changes without an addressbook have been cleaned up
 - Remove activity entries of private events
     - Removed 0 activity entries
 - Clean up old calendar subscriptions from deleted users that were not cleaned-up
    0 [----->----------------------]
     - 0 calendar subscriptions without an user have been cleaned up
 - Remove invalid object properties
     - 0 invalid object properties removed.
 - Copy default images to the app data directory
     - Icon external.svg already exists
     - Icon external-dark.svg already exists
     - Icon settings.svg already exists
     - Icon settings-dark.svg already exists
 - Fix the share type of guest shares when migrating from ownCloud
 - Copy the share password into the dedicated column
 - Set existing shares as accepted
 - Clean up meta table
 - Show a hint about the new editor to existing users
 - Update OAuth token expiration times
 - Repair Passwords Database Objects
     - Checking 0 tag revisions
    0 [--------->------------------]
     - Fixed 0 tag revisions
     - Checking 2 folder revisions
 2/2 [============================] 100%
     - Fixed 0 folder revisions
     - Checking 2 password revisions
 2/2 [============================] 100%
     - Fixed 0 password revisions
     - Checking 0 tag models
    0 [-------------------->-------]
     - Fixed 0 tag models
     - Checking 1 folder models
 1/1 [============================] 100%
     - Fixed 0 folder models
     - Checking 2 password models
 2/2 [============================] 100%
     - Fixed 0 password models
     - Checking 0 password tag relations
    0 [--->------------------------]
     - Fixed 0 password tag relations
     - Checking 0 shares
    0 [------->--------------------]
     - Fixed 0 shares
 - Separate user configured providers internal name and title. Also removes old unnecessary user config.
 - Set default group in each provider
 - Migrate custom providers to one config key
 - Move telegram config to comman providers
 - Create help command
 - Invalidate access cache for projects conversation provider
 - Cache the user display names
 - Switches from default updater server to the customer one if a valid subscription is available
 - Send an admin notification if monthly report is disabled
 - Force-reset all Text sessions before Yjs migration
 - Initialize migration of background images from dashboard to theming app
 - Add background job to check for backup codes
 - Insert UUIDFix background job for user and group in batches
 - Remove deprecated refresh time markers for LDAP user records
 - Populating added database structures for workflows

The built-in database repair tool is for MySQL and you are using a different database. What are you using? Maybe see if there is a database repair for what you are using?

It seems that the nextcloud app is using postgres but I dont really know much about databases so I might be wrong.

Yes you have PostgreSQL. I’ve never worked with it but a quick search of postgresql repair came up with a lot of info.

Hopefully someone familiar can chime in.

Im using PostgreSQL 14.11

I have the solution:

Login:
sudo -u postgres psql

Connect to the database:
\c nextcloud

List the content of the cards table:
TABLE oc_deck_cards;

Edit the content of the broken card:
UPDATE oc_deck_cards SET duedate = ‘xxxx-xx-xx 07:00:00’ WHERE id = {ID};

exit:
\q

Now the error has disappeared and the card has the correct date :slight_smile:

I found a solution that worked for me on truenas scale :

On the app Notes there are those infos :

I installed the nextcloud app pgadmin, connected to a new server with those credentials and searched the keyword deck_cards. I found the table, right click → view-edit data and edited the wrong value. Once done, I clicked on the little save button at the top of the data edit window and the issue is now gone. Thanks a lot for all your responses !

1 Like