【问题标题】:Mysql in Java: Data truncated for column 'AAL' at row 1 errorJava中的Mysql:第1行错误中列'AAL'的数据被截断
【发布时间】:2017-07-13 14:44:40
【问题描述】:

我正在尝试将 ArrayLists 中的数据插入 Java 中的 mysql 表中,但是我不断收到以下错误:java.sql.SQLException: Data truncated for column 'AAL' at row 1。

以下是部分代码:

stmt = conn.createStatement();

sql = "CREATE TABLE IF NOT EXISTS stocks "
             + "(id INTEGER not NULL AUTO_INCREMENT, date LONGBLOB , " + "time LONGBLOB, "
             + " PRIMARY KEY ( id ))";

stmt.executeUpdate(sql);
System.out.println("Created table in given database...");

for (int i = 0; i < stockList.size(); i++) {
   System.out.println(stockList.get(i).getName() + i);

   sql = "ALTER TABLE stocks ADD " + stockList.get(i).getName() + " DOUBLE";
stmt.executeUpdate(sql);
    }

for (int i = 0; i < stockList.size(); i++) {
    System.out.println(i);

    sql = "INSERT INTO stocks (id, date, time, " + stockList.get(i).getName() + ") VALUES (NULL, '" + stockList.get(i).getDate() +
             "', '" + stockList.get(i).getTime() + "', '" + stockList.get(i).getPrice() + "')";
        stmt.executeUpdate(sql); 
}

非常感谢任何帮助。

【问题讨论】:

  • 如果你再读一遍,异常信息就足够了Data truncated for column - 这意味着你插入的数据长度大于列的最大长度
  • 我该如何解决这个问题。 LONGBLOB 不能解决这个问题吗?
  • 这里的“AAL”列是什么?
  • 它来自 stockList.get(0).getName()
  • 你的sql表中的列是怎么定义的?

标签: java mysql database arraylist insert-into


【解决方案1】:

您指出stockList.get(i).getPrice() 是一个字符串,并且您在插入的值周围加上引号。因此,您实际上是在尝试将字符串值插入 DOUBLE 列。通常 MySQL 会自动将字符串转换为双精度值,但是,我怀疑至少您的一些 getPrice() 值不是有效的双精度值。你可以试试这个:

... "', " + Double.parseDouble(stockList.get(i).getPrice()) + ")";

..但如果某些价格不是有效的双倍价格,这也会失败。

【讨论】:

    【解决方案2】:

    您的表和查询设计存在一些问题:

    使用DATETIMEDATETIME 类型来存储日期和时间。 LONGBLOB 不是为了这个。

    被截断的数据实际上是您尝试插入DOUBLE 列的价格。如果getPrice() 返回一个字符串,您需要检查小数点和千位分隔符。 MySQL 使用 .默认情况下,(点)为小数,(逗号)为千位分隔符。并且不要在查询中使用引号。

    在处理价格时,请考虑使用DECIMAL 作为类型。 FLOATDOUBLE 可能不准确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 2021-08-28
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多