MySql TEXT 列的最大字符长度是多少?

Posted

技术标签:

【中文标题】MySql TEXT 列的最大字符长度是多少?【英文标题】:What's the maximum character length of a MySql TEXT column? 【发布时间】:2018-01-10 06:03:48 【问题描述】:

我正在使用 mysql 5.5.37。我有一个带有以下列的 InnoDB 表

| MESSAGE  | text        | YES  |     | NULL              |       |

我注意到我们的日志(我们使用 Hibernate v5)中有类似的错误

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'MESSAGE' at row 1
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4094) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375) [mysql-connector-java-5.1.22-bin.jar:]
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359) [mysql-connector-java-5.1.22-bin.jar:]
        at org.jboss.jca.adapters.jdbc.CachedPreparedStatement.executeUpdate(CachedPreparedStatement.java:115)
        at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:493)
        at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204) [hibernate-core-5.1.5.Final.jar:5.1.5.Final]

我的问题是,TEXT 列的最大长度(以字符为单位)是多少?

【问题讨论】:

您是否尝试过寻找答案?重复的问题标题与您的几乎相同。 最大长度为 64K bytes,介于 16K 和 64K utf8mb4characters 之间。切换到MEDIUMTEXT 以增加限制。 【参考方案1】:

这个问题是关于字符的;提议的“dup”大约是 bytes。所以,我重新打开了它。

TEXT 列的最大长度为 64K 字节,介于 16K 和 64K utf8mb4 字符之间。

你们中的一些人正在使用latin1,64K。如果utf8,则为 64K/3。等等。

切换到MEDIUMTEXT 将限制增加到 16M(或 16M/4 等)。

【讨论】:

以上是关于MySql TEXT 列的最大字符长度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据库中text类型不设置大小默认大小事多少

mysql varchar 最大可以设置多少

Mysql一个表中 最多能存多少文字? 一列中varchar最大值允许多少?

Clickhouse中一列的最大长度是多少?可以修改吗?

mysql中text可以存储多少个字

SQL的语句最大长度限制多少字符