1. Running a database migration in Laravel 9 throws an error: SQLSTATE[HY000]: General error: 1366 Incorrect DECIMAL value: ‘0’ for column ” at row -1. See Figure 1.
![Running a database migration in Laravel 9 throws an error: SQLSTATE[HY000]: General error: 1366 Incorrect DECIMAL value: '0' for column '' at row -1](https://media.shuijingwanwq.com/2024/06/1-8.png)
Plaintext
PS E:\wwwroot\object> php artisan migrate
INFO Running migrations.
2024_05_20_152915_update_table_stock_out_sort_type ................................................................................ 13,901ms FAIL
Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1366 Incorrect DECIMAL value: '0' for column '' at row -1 (SQL: ALTER TABLE table CHANGE stock_out_sort stock_out_sort NUMERIC(36, 0) DEFAULT '0' NOT NULL COMMENT '订单缺货计算排序字段')
at E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Database\Connection.php:760
756▕ // If an exception occurs when attempting to run a query, we'll format the error
757▕ // message to include the bindings with SQL, which will make this exception a
758▕ // lot more helpful to the developer instead of just the database's errors.
759▕ catch (Exception $e) {
➜ 760▕ throw new QueryException(
761▕ $query, $this->prepare_bindings($bindings), $e
762▕ );
763▕ }
764▕ }
1 E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Database\Connection.php:545
PDOException::("SQLSTATE[HY000]: General error: 1366 Incorrect DECIMAL value: '0' for column '' at row -1")
2 E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Database\Connection.php:545
PDOStatement::execute()
PS E:\wwwroot\object>
2. Copying the failed SQL into Navicat for MySQL to execute still throws an error: 1366 – Incorrect DECIMAL value: ‘0’ for column ” at row -1. See Figure 2.

3. Review the code implementation of the migration file.
PHP
decimal('stock_out_sort', 36, 0)->default(0)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('table', function (Blueprint $table) {
$table->string('stock_out_sort', 50)->default('')->change();
});
}
};
4. Upon carefully inspecting the existing data in the table, I found that the stock_out_sort field contained an empty string. See Figure 3.

5. I manually changed the empty string value to 99801708945158. Then I ran the database migration again; the migration file executed successfully and no longer threw an error. See Figure 4.

