oops...
On 5/26/06, Stefan Guggisberg <[EMAIL PROTECTED]> wrote:
hi nicolas,
On 5/25/06, Nicolas Modrzyk <[EMAIL PROTECTED]> wrote:
> HI Stefan,
>
> Thank you for your quick answer. See below for my full configuration.
> I don't have the full strack trace anymore, I will try to reproduce it.
i found the problem. your mysql db is utf8 as default charset.
i meant: your mysql db is probably using utf8 as default charset.
> com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Specified key
> was too long; max key length is 1000 byte
this error is thrown by the following line in mysql.dll:
i meant: mysql.ddl (in
jackrabbit/src/main/java/org/apache/jackrabbit/core/fs/db)
cheers
stefan
create unique index ${schemaObjectPrefix}FSENTRY_IDX on
${schemaObjectPrefix}FSENTRY (FSENTRY_PATH(245), FSENTRY_NAME)
the above statement works fine with latin1 databases. keys would be
500 bytes, so well beyond the limit. but in utf8 a character can take
up as much as 3 bytes, 3 * 500 > 1000; hence the exception
you can do any of the following to work around this issue:
1) use a latin1 db
2) modify the mysql.dll to create a latin1 table, i.e.
create table .... charset latin1
3) modify the mysql.dll to limit the key to 333 characters, e.g.
create unique index ... (FSENTRY_PATH(233), FSENTRY_NAME(100))
i'd recommend option 1) or 2).
some related information:
http://www.xaprb.com/blog/2006/04/17/max-key-length-in-mysql/
http://dev.mysql.com/doc/refman/5.0/en/create-index.html
>
> Does that mean it is better to simply have the persistence manager
> using the database, but keeping the FileSystem as regular files ?
in general, yes.
cheers
stefan
>
> Regards,
>
> Nicolas,
>
> ============= Jackrabbit configuration file =================
> <Repository>
> <FileSystem
> class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
> <param name="driver" value="com.mysql.jdbc.Driver"/>
> <param name="url" value="jdbc:mysql:///test"/>
> <param name="schema" value="mysql"/>
> <param name="user" value="xxx"/>
> <param name="schemaObjectPrefix" value="rep_"/>
> </FileSystem>
> <Security appName="Jackrabbit">
> <AccessManager
> class="org.apache.jackrabbit.core.security.SimpleAccessManager"></
> AccessManager>
> <LoginModule
> class="org.apache.jackrabbit.core.security.SimpleLoginModule">
> <param name="anonymousId" value="anonymous"/>
> </LoginModule>
> </Security>
> <Workspaces rootPath="${rep.home}/workspaces"
> defaultWorkspace="default"/>
> <Workspace name="default">
> <FileSystem
> class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
> <param name="path" value="${wsp.home}/default" />
> </FileSystem>
> <PersistenceManager
> class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
> <param name="driver" value="com.mysql.jdbc.Driver"/>
> <param name="url" value="jdbc:mysql:///test"/>
> <param name="schema" value="mysql"/>
> <param name="user" value="xxx"/>
> <param name="schemaObjectPrefix" value="${wsp.name}_"/>
> <param name="externalBLOBs" value="false"/>
> </PersistenceManager>
> <SearchIndex
> class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
> <param name="textFilterClasses"
>
> value="org.apache.jackrabbit.core.query.MsExcelTextFilter,org.apache.jac
> krabbit.core.query.MsPowerPointTextFilter,org.apache.jackrabbit.core.que
> ry.MsWordTextFilter,org.apache.jackrabbit.core.query.PdfTextFilter,org.a
> pache.jackrabbit.core.query.HTMLTextFilter,org.apache.jackrabbit.core.qu
> ery.XMLTextFilter,org.apache.jackrabbit.core.query.RTFTextFilter"/>
> <param name="path" value="${wsp.home}/index"/>
> <param name="useCompoundFile" value="true"/>
> <param name="minMergeDocs" value="100"/>
> <param name="volatileIdleTime" value="3"/>
> <param name="maxMergeDocs" value="100000"/>
> <param name="mergeFactor" value="10"/>
> <param name="bufferSize" value="10"/>
> </SearchIndex>
> </Workspace>
> <Versioning rootPath="${rep.home}/version">
> <FileSystem
> class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
> <param name="path" value="${rep.home}/workspaces/version"/>
> </FileSystem>
> <PersistenceManager
> class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
> <param name="driver" value="com.mysql.jdbc.Driver"/>
> <param name="url" value="jdbc:mysql:///test"/>
> <param name="schema" value="mysql"/>
> <param name="user" value="xxx"/>
> <param name="schemaObjectPrefix" value="version_"/>
> <param name="externalBLOBs" value="false"/>
> </PersistenceManager>
> </Versioning>
> </Repository>
>