Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-11185

RDB: MariaDB (MySQL) support

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: In Progress
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • rdbmk

    Description

      Oak with mariadb database doesn't work, there are errors during table creation.

      As jdbc url use a typical mariadb url like jdbc:mariadb://localhost:3306, here it is the exception:

      2024.09.29 17:51:35.549 - *WARN * [main] o.m.jdbc.message.server.ErrorPacket: Error: 1074-42000: Column length too big for column 'DATA' (max = 16383); use BLOB or TEXT instead (warn in Slf4JLogger.java, line 99)
      2024.09.29 17:51:35.549 - *ERROR* [main] o.a.j.o.p.d.rdb.RDBDocumentStore: Failed to create table 'CLUSTERNODES' in 'MariaDB - using default settings (jdbc:mariadb://localhost/default_tenant?user=default_tenant&password=***)' (createTableFor in RDBDocumentStore.java, line 1401)
      java.sql.SQLSyntaxErrorException: (conn=4) Column length too big for column 'DATA' (max = 16383); use BLOB or TEXT instead
      at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:289)
      at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:378)
      at org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:172)
      at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:915)
      at org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:854)
      at org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:773)
      at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:697)
      at org.mariadb.jdbc.Statement.executeInternal(Statement.java:1035)
      

      I've set "CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" as suggested here


      I gave a look to RDBDocumentStoreDB and it's quite simple find the issue, it is not recognizing MariaDb, it only knows MySql so it uses DEFAULT when it comes MariaDb from DatabaseMetaData and so it uses the default getTableCreationStatement which has varchar length which cannot work in MariaDb because it's too high than maximum row length

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            reschke Julian Reschke
            Gamby1980 Raffaele Gambelli

            Dates

              Created:
              Updated:

              Slack

                Issue deployment