我想更改数据库中项目的可用性。
<td><select name="avl">
<option value="1" name="true ">Available</option>
<option value="0" name="false">Unavailable</option>
</select>
</td>
这是我更新字段的sql语句。
<sql:update dataSource="${dbsource}" var="count">
UPDATE restaurant SET available = ? WHERE idrestaurant ='${param.id}'
<sql:param value="${param.avl}" />
</sql:update>
我可用的FIELD数据类型是BIT。
但是我收到了这个错误。
警告:用于servlet jsp的StandardWrapperValve [jsp]:Servlet.service()引发了异常 com.mysql.jdbc.MysqlDataTruncation:数据截断:第1行的“可用”列的数据太长
答案 0 :(得分:0)
我在MySQL中使用BIT
的方式与您相同。我知道这与你的情况有点不同,但希望它会有所帮助。
我有一栏:
NAME:PUBLISHED | DATATYPE:BIT
通过页面上的按钮切换。
<li sec:authorize="hasRole('ROLE_ADMIN')">
<a th:href="@{'/administration/'+*{postId} + '/publish'}" th:text="*{postMetaData.published} ? 'unpublish' : 'publish'">publish</a>
</li>
上面映射的控制器在服务中调用以下方法:
public boolean togglePublishPost(int postId){
Post post = postRepo.findOne(postId);
if(post.isPublished()){
post.setPublished(false);
}else{
post.setPublished(true);
post.setPublishDate(new Date());
}
postRepo.save(post);
return post.isPublished();
}
就像我说的那样,它有所不同,但看起来我们有点想要达到同样的目的。因此,我想简而言之,可以使用BIT
和true
更新false
。