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.

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:

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>

Reply via email to