ubuntu - Glassfish 4.1 和 MariaDB 的麻烦

标签 ubuntu netbeans glassfish mariadb glassfish-4.1

我正在使用 Netbeans 8.2、Glassfish 4.1 和 MariaDB 开发企业应用程序,所有这些都在 Ubuntu 18.04 上。

但是,在与 DB 建立所有连接后,Glassfish 会返回此异常:

Internal Exception: java.sql.SQLException: Unknown system variable 'OPTION'

正如我所见,SET OPTION命令在 MySQL 5.1 中被弃用,最终在 MySQL 5.6 中被删除。 MariaDB 在他们的 10.0 版本中做了同样的事情。 Glassfish 4.1 似乎仍然使用此命令。

这导致我有两个主要的解决方案:
  • 升级 Glassfish:Glassfish 4.1.1 非常不稳定,大部分时间都无法正常工作。新版本 (5.0.x) 与 Netbeans 8.2 不兼容。
  • 降级 MariaDB:MariaDB 5.5 在 Ubuntu 18.04 中不可用(在他们的网站上似乎是 14.04 作为其最后一个正式版本)。
  • 降级 Ubuntu:我可以将我的操作系统降级到 14.04,但我希望这可能是我最后的选择。

  • 有人可以给我一些建议吗?谢谢!

    最佳答案

    正确的做法是使用支持现代 SQL 语法的软件版本。即使这不是最简单的解决方案,它也很可能在 future 得到返回。

    解决此问题的另一种方法是使用 MariaDB MaxScale位于您的应用程序和数据库之间,并将其配置为翻译 SET OPTION SQL 到正确的 SET形式。这可以通过 Regex filter 来完成。这意味着像这样的情况。

    这是一个用于小型 SQL 转换服务的 MaxScale 配置,翻译为 SET OPTIONSET :

    [maxscale]
    threads=auto
    
    [my-database]
    type=server
    address=hostname-of-my-server
    port=3306
    protocol=MariaDBBackend
    
    [database-monitor]
    type=monitor
    module=mariadbmon
    servers=my-database
    user=<username used to monitor the server>
    passwd=<password for the user>
    monitor_interval=5000
    
    [replace-option]
    type=filter
    module=regexfilter
    match=SET OPTION
    replace=SET
    
    [routing-service]
    type=service
    router=readconnroute
    servers=my-database
    user=<username used to monitor the server>
    passwd=<password for the user>
    filters=replace-option
    
    [routing-listener]
    type=listener
    service=routing-service
    protocol=MariaDBClient
    port=3306
    

    关于ubuntu - Glassfish 4.1 和 MariaDB 的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447320/

    相关文章:

    php - Symfony 4 和 Amazon S3 - AWS 凭证不起作用

    unix - 在 netbeans 6.9.1 上安装 inconsolata

    grails - 如何永久保存数据?

    debugging - 在远程 Glassfish 上进行日志记录和/或调试

    linux - 如何在不同端口上启动多个memcached服务器

    c# - 在 ubuntu 上通过 .net core 发送电子邮件返回 base64 错误

    java - Java EE 服务器上的动态角色

    linux - 部署 Java EE 应用程序的变音符号

    bash 脚本无法按预期匹配文件

    java - context.xml 中 SQLite 数据库的相对路径