Bug 29926 - аконади не стартует
Summary: аконади не стартует
Status: CLOSED WONTFIX
Alias: None
Product: Sisyphus
Classification: Development
Component: akonadi (show other bugs)
Version: unstable
Hardware: all Linux
: P3 blocker
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL: http://bugs.kde.org/331867
Keywords:
Depends on:
Blocks:
 
Reported: 2014-03-31 08:10 MSK by Gleb Kulikov
Modified: 2022-10-14 11:20 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gleb Kulikov 2014-03-31 08:10:28 MSK
аконади не стартует: не может создать таблицу в базе, пресловутая ошибка 150.
От "чистого" пользователя ошибка сохраняется.

"Sql error: Can't create table 'akonadi.TagRemoteIdResourceRelationTable' (errno: 150) QMYSQL: Unable to execute query                      
Query: CREATE TABLE TagRemoteIdResourceRelationTable (tagId BIGINT NOT NULL, resourceId BIGINT NOT NULL, remoteId VARBINARY(255) NOT NULL, 
FOREIGN KEY (tagId) REFERENCES TagTable(id) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (resourceId) REFERENCES ResourceTable(id) ON U
PDATE CASCADE ON DELETE CASCADE)  COLLATE=utf8_general_ci DEFAULT CHARSET=utf8"                                                            
Unable to initialize database.                                                                                                             
"[                                                                                                                                         
0: akonadiserver(_Z11akBacktracev+0x37) [0x462b97]                                                                                         
1: akonadiserver() [0x462df2]                                                                                                              
2: /lib64/libc.so.6(+0x35320) [0x7f5025613320]                                                                                             
3: /lib64/libc.so.6(gsignal+0x35) [0x7f50256132a5]                                                                                         
4: /lib64/libc.so.6(abort+0x148) [0x7f5025614728]                                                                                          
5: /usr/lib64/libQtCore.so.4(_Z17qt_message_output9QtMsgTypePKc+0x64) [0x7f50270ab964]                                                     
6: akonadiserver(_ZN15FileDebugStream9writeDataEPKcx+0x9d) [0x464d0d]                                                                      
7: /usr/lib64/libQtCore.so.4(_ZN9QIODevice5writeEPKcx+0xb0) [0x7f5027135060]                                                               
8: /usr/lib64/libQtCore.so.4(+0x1031c9) [0x7f50271411c9]                                                                                   
9: /usr/lib64/libQtCore.so.4(_ZN11QTextStreamD1Ev+0x58) [0x7f50271412d8]                                                                   
10: akonadiserver(_ZN7Akonadi6Server13AkonadiServer4initEv+0x5fa) [0x46794a]                                                               
11: /usr/lib64/libQtCore.so.4(_ZN7QObject5eventEP6QEvent+0x246) [0x7f50271ab216]                                                           
12: /usr/lib64/libQtCore.so.4(_ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent+0x6d) [0x7f50271958fd]                               
13: /usr/lib64/libQtCore.so.4(_ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData+0x1aa) [0x7f5027197cea]              
14: /usr/lib64/libQtCore.so.4(+0x17eff3) [0x7f50271bcff3]                                                                                  
15: /lib64/libglib-2.0.so.0(g_main_context_dispatch+0x135) [0x7f5024cc4ef5]                                                                
16: /lib64/libglib-2.0.so.0(+0x4d238) [0x7f5024cc5238]                                                                                     
17: /lib64/libglib-2.0.so.0(g_main_context_iteration+0x34) [0x7f5024cc52f4]                                                                
18: /usr/lib64/libQtCore.so.4(_ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE+0x65) [0x7f50271bc905]   
19: /usr/lib64/libQtCore.so.4(_ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE+0x2f) [0x7f50271946bf]                       
20: /usr/lib64/libQtCore.so.4(_ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE+0x14e) [0x7f502719498e]                                
21: /usr/lib64/libQtCore.so.4(_ZN16QCoreApplication4execEv+0x8f) [0x7f5027198e8f]                                                          
22: akonadiserver(main+0x1bf) [0x45c69f]                                                                                                   
23: /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f50255ffa15]                                                                              
24: akonadiserver() [0x45cde8]                                                                                                             
]                                                                                                                                          
"
Comment 1 Zerg 2014-03-31 13:29:02 MSK
Покажите для начала
rpm -qf /usr/sbin/mysqld
Comment 2 Gleb Kulikov 2014-04-01 10:12:36 MSK
(В ответ на комментарий №1)
> Покажите для начала
> rpm -qf /usr/sbin/mysqld

mariadb-server-5.5.34-alt1
Comment 3 Zerg 2014-04-01 13:29:45 MSK
Эта проблема у каждого индивидуально проявляется. Я постараюсь что-нибудь придумать для предотвращения.

В вашем конкретном случае сначала нужно удалить таблицу TagRemoteIdResourceRelationTable и попробовать снова запустить akonadi.

Получить опцию для соединения с пользовательским mysqld можно командой
ps x --cols 1000 -u $LOGNAME| grep -e 'mysqld.*akonadi'| head -n1| grep -e '--socket'| sed 's|.*\(--socket.*mysql.socket\).*|\1|'

Потом
mysql расположениесокета akonadi
и в нем
DROP TABLE TagRemoteIdResourceRelationTable;
Comment 4 Gleb Kulikov 2014-04-23 13:54:51 MSK
нет, это не работает:

MariaDB [akonadi]> DROP TABLE akonadi.TagRemoteIdResourceRelationTable;
ERROR 1051 (42S02): Unknown table 'TagRemoteIdResourceRelationTable

и естественно, сохраняется

"Sql error: Can't create table 'akonadi.TagRemoteIdResourceRelationTable'
(errno: 150) QMYSQL: Unable to execute query                      
Query: CREATE TABLE TagRemoteIdResourceRelationTable (tagId BIGINT NOT NULL,
resourceId BIGINT NOT NULL, remoteId VARBINARY(255) NOT NULL, 
FOREIGN KEY (tagId) REFERENCES TagTable(id) ON UPDATE CASCADE ON DELETE
CASCADE, FOREIGN KEY (resourceId) REFERENCES ResourceTable(id) ON U
PDATE CASCADE ON DELETE CASCADE)  COLLATE=utf8_general_ci DEFAULT CHARSET=utf8" 
Unable to initialize database. 

PS: KDE обновлён до 4.13
Comment 5 Sergey V Turchin 2014-04-23 16:06:40 MSK
Тогда нужно подробнее индивидульно разбираться или удалить базу для создания новой.
Comment 6 Gleb Kulikov 2014-04-24 08:07:27 MSK
(В ответ на комментарий №5)
> Тогда нужно подробнее индивидульно разбираться или удалить базу для создания
> новой.

Разобрался!
%$#!

ранее старые базы аконади/майсиквела были созданы с параметрами default-character-set=latin1 default-collation=latin1_swedish_ci (??? это у всех так?!), в результате майсиквел отказывается создавать таблицу с отношением foreign key и default-character-set=utf8 default-collation=utf8_general_ci).

при отключении проверки ключей, таблицы создаются, но база не работает.


Пришлось пересоздать(!) таблицы и подменить(!) в них данные на старые. После применения такого трюка, всё работает.

Кошмар!

Проверил, в нашем KDE 4.13 такой бомбы, вроде как, нет: у нового пользователя таблицы создаются с корректными опциями. Но что делать, когда юзеров много?!
Comment 7 Zerg 2014-04-24 11:36:03 MSK
(В ответ на комментарий №6)
> что делать, когда юзеров много?!
Остановить Akonadi у всех перед обновлением или разлогинить.
Comment 8 Sergey V Turchin 2015-01-15 15:05:47 MSK
Нормального решения не нашел, поэтому в p7 обновлять не буду вместе с KDE, а при обновлении p7->p8 нужно будет указать в инструкции на необходимость останова akonadi.
Comment 9 Sergey V Turchin 2022-10-14 11:20:51 MSK
Можно сказать, что уже просрочилось.