为什么我收到未锁定的错误?

时间:2015-09-03 06:59:54

标签: php mysql

我有一个查询,它获取条形码的最后一个值并将其递增一。顺便说一句,条形码前缀为PU。示例是PU1000040我在PU1000001

中开始计算
SELECT
    CONCAT(
        LEFT(BARCODE, 2),
        MAX(
            RIGHT(BARCODE, LENGTH(BARCODE) - 2)* 1
        )+ 1
    )AS newbarcode
FROM
    KGU
WHERE
    HW_TYPE = 'STANDARD PURGE UNIT'

这个工作正常并且总是递增1,所以永远不会有重复。然后我意识到,如果我将它放在我的实时服务器中,其中没有数据仍然存在,它将不会返回任何内容,因为没有任何东西可以将它递增一个。所以我提出了这个问题:

SELECT
    CASE
WHEN EXISTS(
    SELECT
        1
    FROM
        KGU
    WHERE
        HW_TYPE = 'STANDARD PURGE UNIT'
)THEN
    (
        SELECT
            CONCAT(
                LEFT(BARCODE, 2),
                MAX(
                    RIGHT(BARCODE, LENGTH(BARCODE) - 2)* 1
                )+ 1
            )
        FROM
            KGU
        WHERE
            HW_TYPE = 'STANDARD PURGE UNIT'
    )
ELSE
    'PU1000001'
END AS newbarcode

当我在navicat中运行它时,当没有记录时它确实输出PU1000001。如果存在,则递增最后一个条形码。但是,在程序中运行时会导致错误。具体在这一行:$new_barcode = $conn_hwcdb->getOne($sql);

我收到的错误说: 致命错误:在第69行的C:\ xampp \ htdocs \ php \ hwcdb \ api \ Database.php中显示消息“数据库错误:未锁定”的未捕获异常“异常”

异常:数据库错误:未在第69行的C:\ xampp \ htdocs \ php \ hwcdb \ api \ Database.php中锁定

  function getOne($sql) {
    $result = $this->conn->getOne($sql);

    if(DB::isError($result)) {
      throw new Exception($result->getMessage(), $result->getCode());
    }

    return $result;
  }

0 个答案:

没有答案