我正在使用Netbeans 8.2,Glassfish 4.1和MariaDB开发企业应用程序,所有这些都在Ubuntu 18.04上进行。
但是,在与数据库的所有连接建立之后,Glassfish返回此异常:
Internal Exception: java.sql.SQLException: Unknown system variable 'OPTION'
如我所见,SET OPTION
命令在MySQL 5.1中已被弃用,最后在MySQL 5.6中被删除。 MariaDB在其10.0版本中所做的相同。看来Glassfish 4.1仍在使用此命令。
这使我有两个主要解决方案:
有人可以给我一些建议吗?谢谢!
答案 0 :(得分:1)
我们的经验中的end of the period where Oracle offered a commercially-supported version of Glassfish, thus reducing it to a pure reference implementation role标志着Glassfish的可用性和稳定性显着下降,这真是令人遗憾。 Payara是基于Glassfish来源的外部维护的最新版本,但有很多改进。尽管他们已经停止了针对非付费客户的GF4演进,但他们仍然offer a downloadable version。我鼓励您进行测试,如果您喜欢Glassfish,那么您会喜欢Payara的:)
答案 1 :(得分:1)
正确的做法是使用支持现代SQL语法的软件版本。即使这不是最简单的解决方案,也很有可能在将来获得回报。
解决此问题的另一种方法是让MariaDB MaxScale位于应用程序和数据库之间,并对其进行配置,以将SET OPTION
SQL转换为正确的SET
形式。可以使用Regex filter来完成此操作,该操作用于此类情况。
这是用于小型SQL转换服务的MaxScale配置,可将SET OPTION
转换为SET
:
[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