Kexi Frequently Asked Questions
Contact us if you know about something valuable that should be documented here.
1. General Features
- Q1.1: What features Kexi currently offers?
- A1.1: Read the Kexi Features page, look at the screenshots. Use the Kexi handbook.
- Find an announcement for the newest release and look at the "Unsupported features" document added for this release.
- Q1.2: How to use database servers with Kexi?
- A1.2: First, note that you do not need to use database servers at all - you can use file-based builtin database server built into Kexi (SQLite-based, very much like MS Access, but a bit more robust).
- If you want database servers, PostgreSQL and MySQL are supported. Create a new blank database project on server using Kexi's startup dialogs. Kexi will ask you to define connection data with connection dialog and select database name, so you will be able to just pick this predefined connection later. You can also use command line options to create and drop database projects. Also read here (October 2004).
- - Kexi assumes the account of the database server you use has enough permissions for creating a new database and use it. You may want alter the permissions (at least temporarily) using administration tools dedicated for your database server (Kexi itself does not contain such tools). If you're unsure how to do this, ask your database administrator or support.
- - Currently you can not "open" (i.e. connect to) databases created outside of Kexi. You can only import the tables and data.
- - You can also use .kexis shortcut files to store database connection parameter for later reuse. Read here.
- - If you cannot see database drivers available in the "Creating New Project" wizard, make sure that you have installed a package with appropriate database Kexi driver, e.g. calligra-kexi-mysql-driver or calligra-kexi-postgresql-driver for openSUSE. If you compile Kexi from the source code, make sure you have met compile-time requirements for the drivers (if not, a note is displayed at the configure stage); after the first compilation and installation you may want to run 'kbuildsycoca4 --noincremental' to be sure the driver(s) are visible to KDE and Kexi.
- Q1.3: How stable is Kexi?
- A1.3: Read Kexi Stability Statement document.
- Q1.4: Where can I find Kexi documentation (The Handbook)
- A1.4: The handbook is at advanced stage already. Translation to other languages are avaiable thanks to the KDE Translation Team.
- Q1.5: How could I define database relationships with integrity rules for my tables?
- A1.5: This is a planned feature. Combo box widgets allowing to select values, i.e. one-to-many relationships can be used in Kexi 2.x's table and form view. Subforms are planned.
- Q1.6: Reports in Kexi?
- A1.6: Kexi 2.x has full built-in Report Designer.
- Q1.7: Web pages or web forms in Kexi?
- A1.7: Web element for Kexi Forms and Reports are available as plugins. These features are usually provided by optional packages named like kexi-web-form-widget and calligra-reports-web-element, respectively. On the other hand Kexi Web Forms are planned, taking advantage of rich database project's schema available in Kexi designs; web pages could be automatically generated.
- Q1.8: Is it possible to change the name of a field in an existing table without losing the data? Or adding/deleting a fiels?
- A1.8: For Kexi 1.x there are no GUI functions to achieve this. For workarounds, please see the links attached to this mailing list post. In development for Kexi > 2.6.
- The idea of workaround (needed because SQLite has no support for altering of table design) is that you can copy the data, alter the table (which empties it), and then import the data in the altered table. This is the way how the scripts like ksqlite_add_column and kexi_delete_column work.
- Q1.9: How to use LIKE operator?
- A1.9: The Visual Designer does not yet accept like 'abc%' expressions. As a workaround SQL View can be used. Enter SQL condition like: "SELECT owner FROM cars WHERE cars.model LIKE 'Ford%'. More info.
- Q1.10: How to open a table/query/form, execute a script, create a new object or print data automatically after opening the database?
- A1.10: You can add command line options to your command line. Please read Options related to opening objects. If you want to provide desktop shortcuts (convenient for your users), alter (right-click) the KDE shortcut's properties by adding the option(s). For example shortcut can have specified "kexi --open query:myquery mydb.kexi" command for automatic opening of myquery query. This approach is also available within Windows or Mac OS X shortcuts.
- You can add as many "autoopening" options as you want for a single database.
2. Common Mistakes to Avoid
- Q2.1: I am trying to create a blank database ("New project stored in file") and got following error: "could not find databse driver...". I must miss some SQLite library?
- A2.1: SQLite library needed by Kexi has been installed in your operating system already automatically when you installed Kexi.
If you compiled Kexi on your own, you most probably have not installed Kexi properly.
Do this using 'make install' in calligra/ source code directory from the command line.
This will copy (and install) all required libraries and configuration files. You may also want to run 'kbuildsycoca4 --noincremental' from command line to update your "configuration cache".
- Q2.2: I entered some data to my tables and noticed that the 'Save' menu item is grayed out. How can I save my data?
- A2.2: You need to know that Kexi is not document driven. After you opened a project file (or database connection), every change is saved almost immediately after accepting row editing (or sometimes even after cell accepting).
- Q2.3: You told me the bug xyz is already fixed in the developer's Subversion. But I updated my sources and looks like it's still there...
If you're using anonymous CVS account, note there is delay between what is in REAL cvs and what you can see, so try update later (5 hours or even next day?). Sorry. If you're really active tester/bug hunter, consider getting CVS account.
- UPDATE: We have switched to git revision control system so the delay should disappear.
- Q2.4: I created a Kexi project on my server (MySQL or PostgreSQL) but I could not connect (open it). I got error like Invalid database contents. "kexidb_major_ver" database property not found. Server result number: 0.
- A2.4: Check your user privileges on database server. To create a new database you need one or more privileges to do so, the same for creating new tables. Since even empty Kexi project contains a number of "system" tables, you need enough privileges when conencting to the server, so Kexi can create these tables.
- Note: For now, Kexi has no tools to manipulate user's privileges, you need to use administration tools dedicated for your database, like MySQL Admin, etc. You (not Kexi), are responsible for maintaining security when assigning privileges. Future Kexi versions may contain useful administration tools.
- Q2.5: I am trying to connect to an existing (MySQL) database on my server with command "kexi --drv mysql --host mysrv -u myname testdb" and got this message: could not open project 'testdb'. invalid database contents. "kexidb_major_ver" database property not found.
- A2.5: invalid database contents message means that your database is not Kexi-compatible because most probably it was created without (outside of) Kexi. Thus, the database does not contain Kexi-specific "system" tables (with metadata and other information).
- To reuse your data and database schema you should consider using Kexi Migration Tools available in Kexi Menu→Import, Export or Send→Import Database function. For now, please don't expect handling every custom MySQL feature there, especially because Kexi is not database frontend/admin tool but just utilizes database engines for efficient and safe storage. Use other tools for administering your native (non-Kexi) databases, e.g. MySQL Workbench or pgAdmin.
- See also question 4.3.
3. File Formats
- Q3.1: I wonder which is Kexi's native file-format?
- A3.1: There is currently one file format based on standard SQLite database file (binary file), with .kexi extension. Any extensions made to this file are just special, so called "system tables" storted in this database (with names started with "kexi__").
- Q3.2: So, what is difference when I use database server instead of .kexi file for my project?
- A3.2: The difference may be in multiuser access, security, database size (even though SQLite can work with large data). Your data and design is stored on the server in the format defined by the database software itself. From your perspective, Kexi Graphical User Interface is the same regardless what database storage medium you're currently using (that is Kexi's strong point).
- Q3.3: Why not XML as native format?
- A3.3: Kexi is not document-driven, it's project driven instead. Using XML usuallydecreases efficiency of databases by a factor of 1000 or so :) Of course XML data export (e.g. data from tables or queries) is possible. Currently available is data exporting to XHTML using additional Python script. On the other hand you can always store XML in table cells - as text.
4. Database Support & Data Migration
- Q4.1: Is reading/writing of Microsoft Access .mdb/.mde files available? If so, how feature-rich is this module?
- A4.1: Currently, importing table schemas and data is supported using import driver (MS Access data types are carefully mapped to Kexi data types) from .mdb/.mde files. Importing queries, forms, reports and web pages is not yet supported.
- The import driver is built-in into Kexi. See MDBDriver for more info, including a list of MS Access versions that are supported.
- Q4.2: Kexi does not display tables created outside it's interface. E.g. I am using pysqlite to create table in a sqlite database. Kexi opens the database properly. But the table created with python is not visible in Kexi.
- A4.2: To see external tables you will need to use importing functions. While importing, Kexi autodetects externally-created tables and propose to import them with data.
- There is also plan to allow displaying externally-created tables in Kexi interface without 'importing' them, i.e. linking them. This will lead to smaller functionality set available for these tables, but will in exchange enable connections to existing (sometimes large) databases that can be even read only. This integration feature would be usable especially for advanced users who know what they are doing.
- Optionally, if you don't want to import your external database again and again, as a temporary workaround, you can: 1. create a new database with the same tables schema as the original one (e.g. by importing the database without importing the data), 2. dump the kexi__** "system" tables definitions and contents to the .sql script file, 3. execute the .sql script file within the original database. Then, you Kexi should be able to connect to the original database without problems and see your tables. This workaround only requires you to have write priviledges within the original database for step 3.
- Q4.3: How can I migrate my data to Kexi project or from it
- A4.3: You can use Kexi Migration Tools: 'Tools->Import Database' menu command or save your data to Comma-Separated-Values format (CSV). You can also export a CSV data e.g. from MS Access table, OpenOffice Calc, Calligra Sheets or Excel spreadsheets, and then use "File->Import->Data Table" menu command (appending data to tabes is not yet avaiable yet).
- Q4.4: How can I export Kexi database to a plain text containing SQL statements?
- A4.4: It's not available in Kexi GUI but you can use command line tools attached to Kexi. For SQLite3-based Kexi files, use ".dump" command of sqlite3 - execute "sqlite3 mydb.kexi .dump > dump.sql" to get a dump.sql file.
- Q4.5: If I use Kexi with a PostgreSQL or MySQL server, can multiple people using Kexi work with the database?
- A4.5: Yes, it's the idea behind using the server. So far, Kexi expects every user to have account on the server. Some accounts can be set as read-only by db administrator or permissions can be more fine-grained set, up to table level. All such administration is independent of Kexi now and must be performed using server-specific (GUI or command-line) administration tools.
- Q4.6: What if two people are using kexi with the same database account and the same database, will that cause problems?
- A4.6: Depends on the database itself, but probably it will not be a problem on the server side. There's only one thing: you may need to "refesh" your data views when needed, e.g. refresh view of your form or table or query view, while others edit it. Currently this can be performed by opening the form/table/query window again. Currently, sometimes it's needed to close the entire database project and open it again if the database schema has been changed by other users.
- Q4.7: Can I use older versions of MySQL?
- A4.7: Yes but the current minimum recommended is 5.0. Older versions will still work, but you will miss out on a number of features and bug fixes added in the last few years. In particular, with 3.x you will miss transactions and support for unicode text data. Better upgrade before starting your project.
- Q5.1: How can I do scripting with Kexi?
- A5.1: Python and Ruby scripting is available in Kexi but as experimental feature. There are two kinds of scripts: 1. one that is saved within a database and operated on it, 2. one that is saved as external script file and is installed as a custom tool in Tools menu Java Script support is in development too (available in Kexi 1.x only). See Scripting for more information. Scripting is available on Linux/Unix and are planned for MS Windows.
- Q6.1: How to install Kexi from sources?
- A6.1: See the Building Calligra document.
- Q6.2: Does Kexi require the newest Qt and KDE libraries?
- A6.2: Kexi's requirements are relatively low. It can be also used under different desktop environments such as GNOME or Xfce or even without desktop environment.
A6.3: Indeed, QtSQL may be sufficient for some purposes however for a database designer app like Kexi there are more requirements than you may expect from QtSQL.
- Q6.3: I wonder why do you offer another database connectivity API and libraries? There's QtSQL module that looks great...
- Q6.4: I'd like to reuse KexiDB in my KDE application to take advantage of the database layer. Where should I go to start doing it?
- A6.4: See Projects Using Kexi Components and Kexi Components For Reuse. Please also see Predicate, successor of KexiDB to be used by Kexi in the future.
- Q6.5: How about a possibility of reusing Kexi's great data-aware components like KexiDataTableView, forms, record navigators?
- A6.5: These components and also Property Editor framework are designed to be reusable, but for now depend on a few Kexi or Calligra features. So this code needs some extracting. See also links in 6.4.
- Q6.6: How Kexi compares to MS Access, OpenOffice.org Base or DataKiosk?
- A6.6: Please read Comparisons document.
- Q7.1: I have found a bug or I have wishes or proposals.
- A7.1: You are welcome to do this. If you're repporting bugs, use the KDE Bug Tracking System. Please look at quick link without wizard, all not closed bugs, all marked as LATER, all wishes
- Use the same System to submit wishes or proposals. Make sure your bug is not listed in the database. You can also discuss proposals on Kexi forum forum.kde.org/kexi: Kexi News ∓ Discussion.
- Q7.2: I am developer - how can I help?
- A7.2: See our requirements, Available Developer Jobs
- Q7.3: I am translator - how can I help?
- A7.3: Please check if there's already translation of Kexi user interface, Documentation or Userbase web page for your language. Go to KDE Translators Center and contact your coordinator. Only propose your help if there is no active translator or if you found mistakes. The Kexi Team is not coordinating translations.
- Q7.4: I can create a package for X Linux/Unix distribution.
- A7.4: Please check in the Downloads section for Calligra packages. Maybe there's already such package for current or previous Kexi release? If unsure, ask the developers. Then read Hints For Making Kexi Packages.
- Q7.5: I am not very skilled but I'd like to offer my help. I do not program Qt/KDE and have not too much free time, although I'm fan of KDE, Access, Linux. What can I do for Kexi?
- A7.5: First, see Available Non-Developer Jobs. You can start contribute by advertise and advocate Kexi Project and help enybody who know less than you about the application. You can visit kexi-project.org web site from time to time and check if there's something that needs improvements or fixing. You may find typos in translations and report it to your translation team.
- Q7.6: Is contributors list published somewhere?
- A7.6: Yes, here
Form component (KFormDesigner) also has its own FAQ here.