如何在mysql中更新具有BIT数据类型的字段

时间:2013-12-05 17:43:26

标签: mysql jstl bit

我想更改数据库中项目的可用性。

<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行的“可用”列的数据太长

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();
}

就像我说的那样,它有所不同,但看起来我们有点想要达到同样的目的。因此,我想简而言之,可以使用BITtrue更新false