SQLSTATE [01000]:警告:1265列的数据被截断

Hon*_*oda -1 mysql sql request laravel

SQLSTATE [01000]:警告:1265第一行的列“ pay_totals”数据被截断

public function order(Request $req){
        $order = new Order;
        $order->pay_number = $req->checkout_number;
        $order->pay_totals = $req->checkout_total;
        $order->save();
        return redirect(route('pay'))->with('message','Sending infomation successfully');
    }
Run Code Online (Sandbox Code Playgroud)

刀:

<input type="text" name="checkout_total" value="{{Cart::subTotal('0') }} ">
Run Code Online (Sandbox Code Playgroud)

Helppp

gan*_*nji 13

在某些情况下,此消息会出现在字段类型为ENUM且发送的数据未在ENUMrange 中定义的位置。因此需要ENUM在提交之前检查表中的值并更新它们。


Lui*_*noz 6

问题在于列pay_totals太大,无法存储从输入中得到的任何内容。

可能的解决方案

SQL: ALTER TABLE [orders] ALTER COLUMN [pay_totals] VARCHAR(MAX)

MYSQL: ALTER TABLE [orders] MODIFY COLUMN [pay_totals] VARCHAR(60000)


小智 5

由于数据类型不匹配,可能会发生相同的错误。例如,如果您分配一个要浮动的字符串,则会出现此错误。因此请务必检查数据类型是否正确。我在symfony上遇到了这个错误。


jay*_*nki 5

有时,由于将数据插入额外的列(例如('created_at','updated_At')数据透视表中)而发生此错误。下面的解决方案对我有用。

错误代码

$users=User::create($input['data']);
foreach ($input['products'] as $product) {
    if (array_key_exists('special_price', $product)) {
        $userProducts[$product['id']] = ['special_price' => $product['special_price']];
    } else {
        $userProducts[$product['id']] = ['special_price' => ''];
    }
    $userProducts['created_at'] = Carbon::now()->toDateTimeString();
    $userProducts['updated_at'] = Carbon::now()->toDateTimeString();
}

//individual product with special price of each product
/*
Output before code correction

array (1 =>
array(
    'special_price' => '',
),
'created_at' => '2019-04-07 14:28:27',
'updated_at' => '2019-04-07 14:28:27',))
*/
$users->products()->sync($userProducts);
Run Code Online (Sandbox Code Playgroud)

代码修正

$users=User::create($input['data']);
foreach ($input['products'] as $product) {
    if (array_key_exists('special_price', $product)) {
        $userProducts[$product['id']] = ['special_price' => $product['special_price']];
    } else {
        $userProducts[$product['id']] = ['special_price' => ''];
    }
    // below lines are after code correction
    $userProducts[$product['id']]['created_at'] = Carbon::now()->toDateTimeString();
    $userProducts[$product['id']]['updated_at'] = Carbon::now()->toDateTimeString();
}

//individual product with special price of each product
/*
Output after code correction

array (1 =>
array(
    'special_price' => '',
    'created_at' => '2019-04-07 14:28:27',
    'updated_at' => '2019-04-07 14:28:27',
),)
*/
$users->products()->sync($userProducts);
Run Code Online (Sandbox Code Playgroud)