[horde] Error inserting new event in kronolith
Dmitry Petrov
dpetrov67 at gmail.com
Mon Mar 2 16:20:47 UTC 2026
Hi Ruud,
Looks like the scheme of your kronolith_icalendar_storage table is
incorrect. Specifically, ical_id should be auto-increment.
This is what I have on my end (but I am using mariadb):
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| ical_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| calendar_id | varchar(255) | NO | MUL | NULL | |
| event_uid | varchar(255) | NO | | NULL | |
| event_data | text | NO | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
Please check your version of horde/kronolith and also check if you have
horde/kronolith/migration/28_kronolith_icalendar_storage.php. Check what
version value you have in kronolith_schema_info table (try select version
from kronolith_schema_info).
It might be a good idea to check other tables as well.
Regards,
Dmitry
On Sun, Mar 1, 2026 at 12:33 PM Ruud Baart <r.j.baart at prompt.nl> wrote:
> Thanks.
>
> Ok, that works, One error gone. The insert error still there.
>
>
> Op 1-3-2026 om 18:27 schreef Dmitry Petrov:
>
> Hi Ruud,
>
> Looks like this was fixed in the dev version (
> https://github.com/horde/Db/commit/af41feb432ff8ff82c74458ee31523971546ebd5
> ), but there is no release yet.
>
> You can try composer require horde/db:dev-FRAMEWORK_6_0 to use the dev
> version.
>
> Regards,
> Dmitry
>
>
> On Sun, Mar 1, 2026 at 10:02 AM Ruud Baart <r.j.baart at prompt.nl> wrote:
>
>> Hi again,
>>
>> My system: Debian trixie, postgres 17, php 8.4, caldav calendar, Horde
>> (horde) <https://mail.tiswe.fr/horde/admin/config/config.php?app=horde>
>> 6.0.0-beta1 , Agenda (kronolith)
>> <https://mail.tiswe.fr/horde/admin/config/config.php?app=kronolith>
>> 5.0.0-alpha9 , Horde_Dav 2.0.0alpha4
>>
>> There is an annoying, severe error while inserting and updating an event
>> with kronolith - see logfile.
>>
>> 1. The first error seems to be that $result is not defined. I assume
>> there must be something added as: if (defined ($results)) { } else {}
>> 2. Not null error means that ical_id is NULL. Either the databse
>> definition of kronolith_icalendar_storage id not correct or ical_id
>> must have a value
>>
>> I inserted a very simple event. No recurrence, just "new event at Mars
>> 2, between 16:00 adn 17:00" . Thats all. The caldav calendar client
>> (Thunderbird 147 an 148) accept the new event but will not show it.
>> Immediately the calendar involved changes to read-only. After a forced
>> sync the new event is inserted in the calendar. Further, I'm not sure
>> but for me all these timestamps - see logfile - seems to be too much.
>>
>> Any help would be very welcome.
>>
>> ==============
>>
>> LOGFILE:
>>
>> ==============
>>
>> Log of the errors (1) insert new event and (2) update event:
>>
>> 1. Inserting new event
>>
>> 2026-03-01T15:24:18+01:00 WARN: HORDE [kronolith] PHP ERROR:
>> Undefined variable $results [pid 469414 on line 1242 of
>> "/xxx/yyy/zzz/horde/vendor/horde/db/lib/Horde/Db/Adapter/Postgresql/Schema.php"]
>> 2026-03-01T15:24:18+01:00 WARN: HORDE [kronolith] PHP ERROR:
>> Undefined variable $results [pid 469414 on line 1242 of
>> "/xxx/yyy/zzz/horde/vendor/horde/db/lib/Horde/Db/Adapter/Postgresql/Schema.php"]
>> 2026-03-01T15:24:18+01:00 WARN: HORDE [kronolith] PHP ERROR:
>> Undefined variable $results [pid 469414 on line 1242 of
>> "/xxx/yyy/zzz/horde/vendor/horde/db/lib/Horde/Db/Adapter/Postgresql/Schema.php"]
>> 2026-03-01T15:24:18+01:00 WARN: HORDE [kronolith] PHP ERROR:
>> Undefined variable $results [pid 469414 on line 1242 of
>> "/xxx/yyy/zzz/horde/vendor/horde/db/lib/Horde/Db/Adapter/Postgresql/Schema.php"]
>> 2026-03-01T15:24:18+01:00 ERR: HORDE [kronolith] SQL QUERY FAILED:
>> SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column
>> "ical_id" of relation "kronolith_icalendar_storage" violates not-null
>> constraint
>> DETAIL: Failing row contains (null, O72lQSaCnYpQP5ohZ5xBzaA,
>> q-mA4rJ2N-Q9CqUpJqlTZbP, BEGIN:VCALENDAR
>> VERSION:2.0
>> PRODID:-//Mozilla.org/NONSGML Mozi...).
>> INSERT INTO "kronolith_icalendar_storage" ("ical_id",
>> "calendar_id",
>> "event_uid", "event_data") VALUES (NULL,
>> 'O72lQSaCnYpQP5ohZ5xBzaA',
>> 'q-mA4rJ2N-Q9CqUpJqlTZbP', 'BEGIN:VCALENDAR VERSION:2.0
>> PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
>> BEGIN:VTIMEZONE TZID:Europe/Paris
>> X-TZINFO:Europe/Paris[2025b]
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+000921
>> TZNAME:Europe/Paris(STD) DTSTART:19110311T000000
>> RDATE:19700101T013151,19700101T010003,19700101T010011
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19160615T000000
>> RDATE:19700101T013156,19700101T010006,19700101T010015
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19161002T000000
>> RDATE:19700101T013156,19700101T010010,19700101T010002
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19170325T000000
>> RDATE:19700101T013157,19700101T010003,19700101T010025
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19171008T000000
>> RDATE:19700101T013157,19700101T010010,19700101T010008
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19180310T000000
>> RDATE:19700101T013158,19700101T010003,19700101T010010
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19190302T000000
>> RDATE:19700101T013159,19700101T010003,19700101T010002
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19181007T000000
>>
>> RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1MO;UNTIL=19191006T000000
>> END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000
>> TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19200215T000000
>> RDATE:19700101T013200,19700101T010002,19700101T010015
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19201024T000000
>> RDATE:19700101T013200,19700101T010010,19700101T010024
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19210315T000000
>> RDATE:19700101T013201,19700101T010003,19700101T010015
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19211026T000000
>> RDATE:19700101T013201,19700101T010010,19700101T010026
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19220326T000000
>> RDATE:19700101T013202,19700101T010003,19700101T010026
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19221008T000000
>> RDATE:19700101T013202,19700101T010010,19700101T010008
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19230527T000000
>> RDATE:19700101T013203,19700101T010005,19700101T010027
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19240330T000000
>> RDATE:19700101T013204,19700101T010003,19700101T010030
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19250405T000000
>> RDATE:19700101T013205,19700101T010004,19700101T010005
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19260418T000000
>> RDATE:19700101T013206,19700101T010004,19700101T010018
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19270410T000000
>> RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=2SA;UNTIL=19280414T230000
>> END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000
>> TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19290421T000000
>> RDATE:19700101T013209,19700101T010004,19700101T010021
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19300413T000000
>> RDATE:19700101T013210,19700101T010004,19700101T010013
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19310419T000000
>> RDATE:19700101T013211,19700101T010004,19700101T010019
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19320403T000000
>> RDATE:19700101T013212,19700101T010004,19700101T010003
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19231007T000000
>>
>> RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T000000
>> END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000
>> TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19330326T000000
>> RDATE:19700101T013213,19700101T010003,19700101T010026
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19331008T000000
>> RDATE:19700101T013213,19700101T010010,19700101T010008
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19340408T000000
>> RDATE:19700101T013214,19700101T010004,19700101T010008
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19350331T000000
>> RDATE:19700101T013215,19700101T010003,19700101T010031
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19360419T000000
>> RDATE:19700101T013216,19700101T010004,19700101T010019
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19370404T000000
>> RDATE:19700101T013217,19700101T010004,19700101T010004
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19380327T000000
>> RDATE:19700101T013218,19700101T010003,19700101T010027
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19341007T000000
>>
>> RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T000000
>> END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000
>> TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19390416T000000
>> RDATE:19700101T013219,19700101T010004,19700101T010016
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000
>> TZNAME:Europe/Paris(DST) DTSTART:19400225T030000
>> RDATE:19700101T013220,19700101T010002,19700101T010025
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(STD) DTSTART:19391119T000000
>> RDATE:19700101T013219,19700101T010011,19700101T010019
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19400615T000000
>> RDATE:19700101T013220,19700101T010006,19700101T010015
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19421102T030000
>> RDATE:19700101T013222,19700101T010011,19700101T010002
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19430329T030000
>> RDATE:19700101T013223,19700101T010003,19700101T010029
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19440403T030000
>> RDATE:19700101T013224,19700101T010004,19700101T010003
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(DST) DTSTART:19440825T000000
>> RDATE:19700101T013224,19700101T010008,19700101T010025
>> END:DAYLIGHT
>> BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(DST) DTSTART:19441008T010000
>> RDATE:19700101T013224,19700101T010010,19700101T010008
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19431004T030000
>> RDATE:19700101T013223,19700101T010010,19700101T010004
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19450402T030000
>> RDATE:19700101T013225,19700101T010004,19700101T010002
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19450916T030000
>> RDATE:19700101T013225,19700101T010009,19700101T010016
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19760328T020000
>> RDATE:19700101T013256,19700101T010003,19700101T010028
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19760926T010000
>> RDATE:19700101T013256,19700101T010009,19700101T010026
>> END:STANDARD
>> BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19770925T030000
>> RDATE:19700101T013257,19700101T010009,19700101T010025
>> END:STANDARD
>> BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19781001T030000
>> RDATE:19700101T013258,19700101T010010,19700101T010001
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19770403T030000
>> RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=19800406T020000
>> END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000
>> TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19790930T030000
>>
>> RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU;UNTIL=19950924T030000
>> END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000
>> TZOFFSETFROM:+010000
>> TZNAME:Europe/Paris(DST) DTSTART:19810329T030000
>>
>> RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T020000
>> END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000
>> TZOFFSETFROM:+020000
>> TZNAME:Europe/Paris(STD) DTSTART:19961027T030000
>> RDATE:19700101T013316,19700101T010010,19700101T010027
>> END:STANDARD
>> BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000
>> TZNAME:(DST)
>> DTSTART:19970330T030000
>> RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
>> END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000
>> TZOFFSETFROM:+020000
>> TZNAME:(STD) DTSTART:19971026T030000
>> RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD
>> END:VTIMEZONE
>> BEGIN:VEVENT CREATED:20260301T142348Z
>> LAST-MODIFIED:20260301T142414Z
>> DTSTAMP:20260301T142414Z
>> UID:18a03796-b305-4e9a-8081-bc15e0ac8ce5
>> SUMMARY:new event DTSTART;TZID=Europe/Paris:20260302T160000
>> DTEND;TZID=Europe/Paris:20260302T170000 TRANSP:OPAQUE
>> END:VEVENT
>> END:VCALENDAR ') RETURNING "ical_id" [pid 469414 on line
>> 244 of
>> "/xxx/yyy/zzz/horde/vendor/horde/db/lib/Horde/Db/Adapter/Pdo/Base.php"]
>>
>> 2. Updating the same event:
>>
>> 2026-03-01T15:47:52+01:00 ERR: HORDE [kronolith] SQL QUERY FAILED:
>> SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column
>> "ical_id" of relation "kronolith_icalendar_storage" violates not-null
>> constraint
>> DETAIL: Failing row contains (null, O72lQSaCnYpQP5ohZ5xBzaA,
>> IxmVC0rpY2TqjVripojLEYE, BEGIN:VCALENDAR
>> VERSION:2.0
>> PRODID:-//Mozilla.org/NONSGML Mozi...).
>> INSERT INTO "kronolith_icalendar_storage" ("ical_id",
>> "calendar_id",
>> "event_uid", "event_data") VALUES (NULL,
>> 'O72lQSaCnYpQP5ohZ5xBzaA',
>> 'IxmVC0rpY2TqjVripojLEYE', 'BEGIN:VCALENDAR VERSION:2.0
>> PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
>> BEGIN:VTIMEZONE TZID:Europe/Paris BEGIN:DAYLIGHT
>> TZOFFSETFROM:+0100
>> TZOFFSETTO:+0200 DTSTART:20260329T030000
>> RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 TZNAME:CEST
>> END:DAYLIGHT
>> BEGIN:STANDARD TZOFFSETFROM:+0200 TZOFFSETTO:+0100
>> DTSTART:20261025T030000
>> RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
>> TZNAME:CE-T END:STANDARD END:VTIMEZONE BEGIN:VEVENT
>> CREATED:20260301T144529Z LAST-MODIFIED:20260301T144748Z
>> DTSTAMP:20260301T144748Z
>> UID:bd1fdd65-c284-49c6-a20a-77bcc2a232e5
>> SUMMARY:new event STATUS:CONFIRMED
>> DTSTART;TZID=Europe/Paris:20260302T160500
>> DTEND;TZID=Europe/Paris:20260302T170500 CLASS:PUBLIC
>> TRANSP:OPAQUE
>> SEQUENCE:1 X-MOZ-GENERATION:1 END:VEVENT END:VCALENDAR ')
>> RETURNING
>> "ical_id" [pid 469569 on line 244 of "/home/websites/
>> webmail.tiswe.fr/horde/vendor/horde/db/lib/Horde/Db/Adapter/Pdo/Base.php
>> "]
>>
>>
More information about the horde
mailing list