【发布时间】:2015-05-20 11:31:24
【问题描述】:
我正在尝试让我的应用程序在 MySQL(用于生产)和 H2(用于开发/测试)上运行。我创建表的(Flyway)脚本现在几乎相同,除了需要为 MySQL 声明“LONGTEXT”的列。如果我也将它用于 H2(在 MySQL 兼容模式下运行),我得到:
Wrong column type in public.public.customer_license for column license.
Found: clob, expected: varchar(65535)
我的实体的 Java 代码:
@Column(name = "license", length = 65535)
private String m_license;
如果我将列声明更改为 VARCHAR(65535),那么它适用于 H2,但不适用于 MySQL:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Column length too big for column 'license'
(max = 21845); use BLOB or TEXT instead
我怎样才能使它对两者都适用?
【问题讨论】:
-
BLOB数据类型也可用于 H2。您可以在 H2 和 MySQL 中使用它。这里是h2database.com/html/datatypes.html#blob_type -
MySQL 似乎不喜欢它。我得到
Wrong column type in flux_licenses.customer_license for column license. Found: blob, expected: longtext -
我在我的项目中支持了 3 个数据库,但是这三个数据库都有不同的类和不同的方法。我用的是 BLOB 而不是 LONGTEXT