Summary: | crash on save (two windows open) | ||
---|---|---|---|
Product: | [Applications] KEXI | Reporter: | Mathieu Jobin <opensource> |
Component: | General | Assignee: | Jarosław Staniek <staniek> |
Status: | CLOSED WORKSFORME | ||
Severity: | crash | ||
Priority: | NOR | ||
Version First Reported In: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | SQLite 2.8 format |
Description
Mathieu Jobin
2004-12-28 06:03:38 UTC
Mathieu, could you reproduce that for current Kexi CVS version? I wish I could get to a state where I have two window open again... but I still have that mime-type problem.... kbuildsycoca: WARNING: '/usr/share/applications/kde/kexi.desktop' specifies undefined mimetype/servicetype 'application/x-kexiproject-sqlite' I dont know, I will try to delete any kexirc I may have in my .kde dir Regarding undefined mimetype/servicetype, x-kexiproject-sqlite.desktop defines the mime type, so your error looks weird. I got something bettter..... Invalid database contents. "kexidb_major_ver" database property not found SQL statement: select db_value from kexi__db where db_property='kexidb_major_ver' LIMIT 1 Server result number: 0 when loading a 2.8 sqlite .kexi hmm,,... when I think about it,.. I may have convert my 3.0 database into a 2.8 one using standard sqlite tool, not kexi provided one, should it make a difference or it would make a valid kexi file ? cuz, as far I as understand, the only difference with standard sqlite and .kexi is bunch of hidden-tables.... I will do a dump of those database see if they are any different... but good news, I am able to open my original kexi file (sqlite3 format), but not my 2.8 conversion. the problem was.... I had two kexi installation on my system, on in my KDEDIR and one in prefix=/usr because I install kexi by hand once, which pickup my KDEDIR, and gentoo koffice ebuild goes into /usr thank you. I guess the problem with select db_value from kexi__db where db_property='kexidb_major_ver' LIMIT 1 Is because you're trying to access older .kexi database? Older kexi databases were not filled with properties at all. Could you send me such a file (or an sql dump if that's mysql db)? And tell me which version of Kexi was used with this. For compatibility I can do one thing: Just dont raise error when required data is not found and fill it automatically. Next time you're opening your db it will have proper fields. OK? well, I create my sqlite3 .kexi DB file with a version really close to Kexi 0.1 Beta 5 Update 1 from them I used CVS Head which I upgrade from time to time, trying to fix this mime-type error. my small test project is to use kexi as my DB management frontend, and make a web interface in rubyonrails using this same DB. but rubyonrails had a problem with SQLite3, so a convert my file to a sqlite 2.8 format. which worked for rubyonrails, but then I could not open any of those in kexi anymore. at this current point of time, I use current CVS head, I am able to read my old sqlite3 format file, but not my 2.8 one, which give the error above. so I dont know is its really this properties thing.... but I can sure send you this file. tonight, once I'm at home again. I dont know about not raising the error, if you have a proper fallback,... its for sure better for an app in general to handle most files. stay tune ... Created attachment 9996 [details]
SQLite 2.8 format
still get same error with this file...
Could not open project "imdb28.kexi"
Details:
Invalid database contents. "kexidb_major_ver" database property not found
SQL statement:
select db_value from kexi__db where db_property='kexidb_major_ver' LIMIT 1
Server result number:
0
I am waiting for the database file you promised. thanks The database you attached is properly opened with current (CVS) Kexi version, with and without conveting from SQLite 2 to SQLite 3. ok, so I guess I'll try to update to the most recent CVS see If I can open it too. additionnaly, I am not able to reproduce the initial bug about the double window crash, so I guess I'll reopen or report again if I ever encounter the problem again. thank you some more informations... create a new database on a remote mysql server create to tables and save change the type of the tables to something else. I get an error saying can't save. Saving "expenses" object failed. Error while executing SQL statement. Message from server: No Database Selected SQL statement: DELETE FROM kexi__fields WHERE t_id=2 Server result number: 1046 http://somekool.net/kexi-2005-03-07.png wait story is not finished... I did a few other tries... then without closing this window, I open a second on on the same database, try to modify a few fields again and save. kexi crashed... I dont know if we have our friend crash-on-two-window bug, but anyway, here is the backtrace. Using host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread 16384 (LWP 9146)] [KCrash handler] #5 0x40069cfe in QShared::ref() (this=0x2d7) at qshared.h:49 #6 0x415c0159 in QString (this=0xbfffdf20, s=@0x81a4754) at tools/qstring.cpp:1397 #7 0x40067d6a in KexiDB::SchemaData::name() const (this=0x81a4748) at schemadata.h:44 #8 0x403dc711 in QuerySchema (this=0x82a0008, tableSchema=0x81a4748) at queryschema.cpp:278 #9 0x403d8940 in KexiDB::TableSchema::query() (this=0x81a4700) at tableschema.cpp:319 #10 0x403b7def in KexiDB::Connection::isEmpty(KexiDB::TableSchema&, bool&) ( this=0x8238e30, table=@0x2d7, success=@0x2d7) at connection.cpp:1995 #11 0x42421ebc in KexiAlterTableDialog::messageForSavingChanges(bool&) ( this=0x829bf90, emptyTable=@0x2d7) at kexialtertabledialog.cpp:429 #12 0x4242584b in KexiAlterTableDialog::storeData() (this=0x829bf90) at kexialtertabledialog.cpp:889 #13 0x40230186 in KexiDialogBase::storeData() (this=0x829b348) at kexidialogbase.cpp:466 #14 0x40061aab in KexiMainWindowImpl::saveObject(KexiDialogBase*, QString const&) (this=0x81afa50, dlg=0x829b348, messageWhenAskingForName=@0x41876698) at keximainwindowimpl.cpp:2196 #15 0x4006086a in KexiMainWindowImpl::slotProjectSave() (this=0x81afa50) at keximainwindowimpl.cpp:1947 #16 0x40065f98 in KexiMainWindowImpl::qt_invoke(int, QUObject*) ( this=0x81afa50, _id=1074395968, _o=0xbfffe410) at keximainwindowimpl.moc:406 #17 0x4125a794 in QObject::activate_signal(QConnectionList*, QUObject*) ( this=0x8179918, clist=0x8151e58, o=0xbfffe410) at kernel/qobject.cpp:2357 #18 0x4125a5ec in QObject::activate_signal(int) (this=0x8179918, signal=2) at kernel/qobject.cpp:2326 #19 0x40a44e48 in KAction::activated() (this=0x2d7) at kaction.moc:171 #20 0x40a44544 in KAction::slotActivated() (this=0x8179918) at kaction.cpp:1102 #21 0x40a447e4 in KAction::slotButtonClicked(int, Qt::ButtonState) ( this=0x8179918, state=1086128040) at kaction.cpp:1147 #22 0x40a4521a in KAction::qt_invoke(int, QUObject*) (this=0x8179918, _id=-1073748488, _o=0xfffffffe) at kaction.moc:214 #23 0x4125a794 in QObject::activate_signal(QConnectionList*, QUObject*) ( this=0x81f73f0, clist=0x819b278, o=0xbfffe590) at kernel/qobject.cpp:2357 #24 0x40afc885 in KToolBarButton::buttonClicked(int, Qt::ButtonState) ( this=0x81f73f0, t0=727, t1=LeftButton) at ktoolbarbutton.moc:154 #25 0x40afb123 in KToolBarButton::mouseReleaseEvent(QMouseEvent*) ( this=0x81f73f0, e=0xbfffeaa0) at ktoolbarbutton.cpp:479 #26 0x4129d745 in QWidget::event(QEvent*) (this=0x81f73f0, e=0xbfffeaa0) at kernel/qwidget.cpp:4673 #27 0x411ea5a9 in QApplication::internalNotify(QObject*, QEvent*) ( this=0xbfffefb0, receiver=0x81f73f0, e=0xbfffeaa0) at kernel/qapplication.cpp:2635 #28 0x411e9adc in QApplication::notify(QObject*, QEvent*) (this=0xbfffefb0, receiver=0x81f73f0, e=0xbfffeaa0) at kernel/qapplication.cpp:2421 #29 0x40cf127d in KApplication::notify(QObject*, QEvent*) (this=0xbfffefb0, receiver=0x81f73f0, event=0xbfffeaa0) at kapplication.cpp:549 #30 0x41172bd6 in QApplication::sendSpontaneousEvent(QObject*, QEvent*) ( receiver=0x81f73f0, event=0xbfffeaa0) at qapplication.h:494 #31 0x4116a9ba in QETWidget::translateMouseEvent(_XEvent const*) ( this=0x81f73f0, event=0xbfffee50) at kernel/qapplication_x11.cpp:4288 #32 0x41168282 in QApplication::x11ProcessEvent(_XEvent*) (this=0xbfffefb0, event=0xbfffee50) at kernel/qapplication_x11.cpp:3439 #33 0x41185a0d in QEventLoop::processEvents(unsigned) (this=0x810d248, flags=4) at kernel/qeventloop_x11.cpp:192 #34 0x41201979 in QEventLoop::enterLoop() (this=0x810d248) at kernel/qeventloop.cpp:198 #35 0x41201892 in QEventLoop::exec() (this=0x810d248) at kernel/qeventloop.cpp:145 #36 0x411ea74b in QApplication::exec() (this=0xbfffefb0) at kernel/qapplication.cpp:2758 #37 0x4001a15a in kdemain (argc=8, argv=0xbffff104) at main.cpp:199 #38 0x0804888f in main (argc=727, argv=0x2d7) at kexi.la.cpp:2 second window: closed first window: waiting... try to recreate the table from scratch saving it to a different name. same, can't connect to the database. Creating table failed. Error while executing SQL statement. Message from server: No Database Selected SQL statement: CREATE TABLE foobar (id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, cost FLOAT, description VARCHAR(200), `date` DATE, category_id INT, human_id INT) Server result number: 1046 File->Quit, it crashed, another backtrace Using host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread 16384 (LWP 8575)] [KCrash handler] #5 0x4001a481 in QString::length() const (this=0x0) at qstring.h:880 #6 0x403a1446 in KexiDB::Connection::isDatabaseUsed() (this=0x0) at connection.cpp:183 #7 0x403b53e0 in KexiDB::Connection::beginTransaction() (this=0x0) at connection.cpp:1554 #8 0x403dad43 in TransactionGuard (this=0xbfffe780, conn=@0x0) at transaction.cpp:133 #9 0x4022a142 in KexiProject::removeObject(KexiMainWindow*, KexiPart::Item&) ( this=0x8228918, wnd=0x0, item=@0x833af70) at kexiproject.cpp:424 #10 0x40063d8d in KexiMainWindowImpl::removeObject(KexiPart::Item*, bool) ( this=0x816ab00, item=0x833af70, dontAsk=120) at keximainwindowimpl.cpp:2775 #11 0x4006209a in KexiMainWindowImpl::closeDialog(KexiDialogBase*, bool) ( this=0x816ab00, dlg=0x8341278, layoutTaskBar=true) at keximainwindowimpl.cpp:2310 #12 0x40061d09 in KexiMainWindowImpl::closeDialog(KexiDialogBase*) (this=0x0, dlg=0x0) at keximainwindowimpl.cpp:2265 #13 0x4005cf71 in KexiMainWindowImpl::closeProject() (this=0x816ab00) at keximainwindowimpl.cpp:966 #14 0x40058532 in ~KexiMainWindowImpl (this=0x816ab00) at keximainwindowimpl.cpp:424 #15 0x412579d6 in QObject::event(QEvent*) (this=0x816ab00, e=0x833b5a0) at kernel/qobject.cpp:750 #16 0x4129d66f in QWidget::event(QEvent*) (this=0x816ab00, e=0x833b5a0) at kernel/qwidget.cpp:4655 #17 0x4137f222 in QMainWindow::event(QEvent*) (this=0x816ab00, e=0x833b5a0) at widgets/qmainwindow.cpp:1686 #18 0x402a5f39 in KMdiMainFrm::event(QEvent*) (this=0x816ab00, e=0x833b5a0) at kmdimainfrm.cpp:1166 #19 0x411ea5a9 in QApplication::internalNotify(QObject*, QEvent*) ( this=0xbfffefb0, receiver=0x816ab00, e=0x833b5a0) at kernel/qapplication.cpp:2635 #20 0x411ea21b in QApplication::notify(QObject*, QEvent*) (this=0xbfffefb0, receiver=0x816ab00, e=0x833b5a0) at kernel/qapplication.cpp:2523 #21 0x40cf127d in KApplication::notify(QObject*, QEvent*) (this=0xbfffefb0, receiver=0x816ab00, event=0x833b5a0) at kapplication.cpp:549 #22 0x401b13d5 in QApplication::sendEvent(QObject*, QEvent*) (receiver=0x0, event=0x54) at qapplication.h:491 #23 0x411eb5f2 in QApplication::sendPostedEvents(QObject*, int) (receiver=0x0, event_type=52) at kernel/qapplication.cpp:3261 #24 0x41201a40 in QEventLoop::enterLoop() (this=0x810d230) at kernel/qeventloop.cpp:213 #25 0x41201892 in QEventLoop::exec() (this=0x810d230) at kernel/qeventloop.cpp:145 #26 0x411ea74b in QApplication::exec() (this=0xbfffefb0) at kernel/qapplication.cpp:2758 #27 0x4001a15a in kdemain (argc=8, argv=0xbffff104) at main.cpp:199 #28 0x0804888f in main (argc=0, argv=0x0) at kexi.la.cpp:2 1. "change the type of the tables to something else" - what does this exactly mean? 2. "then without closing this window, I open a second on on the same database" - this time you've opened another Kexi instance, right? 1. I meant column types : Text -> Float 2. yop, run new instance of kexi from the shell |