Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在mysql中输入200的前100个字符_Java_Mysql_Hibernate - Fatal编程技术网

Java 如何在mysql中输入200的前100个字符

Java 如何在mysql中输入200的前100个字符,java,mysql,hibernate,Java,Mysql,Hibernate,我在mysql中有一个varchar(100)字段,我想存储前100个字符,因为我的数据长度是200个字符(忽略最后100个字符)。我不想更改我的源代码。这在MS Access和MS Server中是可能的,但我想在mysql中这样做 我正在用hibernate在java中应用它,这意味着我没有为此编写插入代码。这里我只是使用save()方法及其抛出的“大数据” 我有个例外- 原因:java.sql.BatchUpdateException:数据截断:第1行“FBUrl”列的数据太长 位于com

我在mysql中有一个varchar(100)字段,我想存储前100个字符,因为我的数据长度是200个字符(忽略最后100个字符)。我不想更改我的源代码。这在MS Access和MS Server中是可能的,但我想在mysql中这样做

我正在用hibernate在java中应用它,这意味着我没有为此编写插入代码。这里我只是使用save()方法及其抛出的“大数据”

我有个例外-

原因:java.sql.BatchUpdateException:数据截断:第1行“FBUrl”列的数据太长
位于com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1527)
位于com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1065)
位于org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
位于org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
glb.chatmeter.exception.adeexception:无法保存Facebook页面数据。


注意:在下面一个小时之后,问题被编辑,并有了实质性的变化。这个答案原封不动地回答了这个问题,但没有涉及编辑版本


您可以使用:

pos
参数从
1
开始(奇怪的是),如果
len
参数大于实际插入的长度,则可以使用它来修剪插入内容:

INSERT INTO table (column) VALUES (SUBSTRING("your data...", 1, 100))
试试这个

SELECT INSERT('your string', 0, 100, '');

在不更改源代码的情况下完成此操作的唯一方法是修改MySQL服务器的配置。更具体地说,
sql\u模式
变量:

我认为您必须设置
严格的转换表

对于严格的表,MySQL 将无效值转换为 列和的最近有效值 插入调整后的值。如果一个值 如果缺少,MySQL将插入隐式 列数据的默认值 类型。无论哪种情况,MySQL都会生成 警告而不是错误和错误 继续处理该语句。 隐式默认值如中所述 第10.1.4节,“数据类型默认值 价值观”


但是,需要注意的是,此设置将影响许多其他事项。我认为不更改源代码的唯一原因是您无权访问它,在这种情况下,您可能只需放大DB列。

您尝试了什么?当您运行一个
插入表(字段)值(stringLongerThan100Chars)
时发生了什么事情,其中
字段
VARCHAR(100)
?您希望它是纯SQL还是您使用的编程语言?@jensgram,通常可以工作;但是,如果mySQL处于严格模式,则会导致错误。@Pekka,您是对的:“如果未启用严格SQL模式,并且您为超过列最大长度的CHAR或VARCHAR列指定了一个值,则该值将被截断以适合该列,并生成警告”()mySQL
SUBSTRING()
指定字符串从位置1开始,与大多数编程语言中的0相反。
SELECT INSERT('your string', 0, 100, '');