1 | | = Trac and SQLAlchemy |
2 | | |
3 | | Trac works with the [http://www.sqlalchemy.org/ SQLAlchemy] database wrapper. Instructions for installing and using SQLAlchemy are listed at th:SqlAlchemyQueryMacro. |
4 | | |
5 | | == List of things to do |
6 | | |
7 | | 1. trac/db/*backend.py files should ultimately be collapsed into one backend.py file |
8 | | 1. trac/upgrades/db*.py files need upgrading to SQLAlchemy |
9 | | 1. database schema needs a review, see MySQL fault later on the page |
10 | | 1. database schema needs relations setup and especially separating out a 'user' table, helps with user provider architecture, eg LDAP |
11 | | |
12 | | == Tables |
13 | | |
14 | | The current database schema has deficiencies. |
15 | | |
16 | | * system table |
17 | | * permission table |
18 | | * auth_cookie table |
19 | | * session table |
20 | | * session_attribute table |
21 | | * attachment table: id is text, for ticket type it is a number, for wiki it is an unique text identifier |
22 | | * wiki table |
23 | | * revision table |
24 | | * node_change table |
25 | | * ticket table |
26 | | * ticket_change table |
27 | | * ticket_custom table |
28 | | * enum table |
29 | | * component table |
30 | | * milestone table |
31 | | * version table |
32 | | * report table |
33 | | |
34 | | == Known issues |
35 | | |
36 | | When Trac is installed with MySQL, the initialization fails with: |
37 | | {{{ |
38 | | OperationalError: (OperationalError) (1170, "BLOB/TEXT column 'rev' used in key |
39 | | specification without a key length") 'CREATE TABLE node_change (rev TEXT NOT NULL, |
40 | | path TEXT NOT NULL, node_type VARCHAR(1), change_type VARCHAR(1) NOT NULL, |
41 | | base_path TEXT, base_rev TEXT, PRIMARY KEY (rev, path, change_type))' {} |
42 | | }}} |
| 1 | See SqlAlchemy. |