【发布时间】:2011-05-05 08:03:12
【问题描述】:
我在 mysql 中有一个带有 varchar(100) 的字段,我想存储前 100 个字符,因为我的数据长度是 200 个字符(忽略最后 100 个字符)。我不想更改我的源代码。这在 MS-Access 和 MS Server 中是可能的,但我想在 mysql 中执行此操作。
我在 java 中使用 hibernate 应用它,这意味着我没有为此编写插入代码。这里我只是使用 save() 方法及其抛出的“大数据”。
我有异常-
原因:java.sql.BatchUpdateException:数据截断:第 1 行的列“FBUrl”的数据太长
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1527) at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1065) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195) glb.chatmeter.exception.AdException: Could not Save Facebook page Data.
【问题讨论】:
-
你试过什么?当您运行
INSERT INTO table (field) VALUES (stringLongerThan100Chars)时发生了什么,其中field是VARCHAR(100)? -
您想要纯 SQL 还是您使用的编程语言?
-
@jensgram 通常会起作用;但是,如果 mySQL 处于严格模式,则会导致错误。
-
@Pekka,你是对的:“如果未启用严格的 SQL 模式,并且您为超过列的最大长度的 CHAR 或 VARCHAR 列分配值,则该值将被截断以适应和产生警告”(source)