SQLSTATE [01000]:警告:1265 列的数据被截断
Posted
技术标签:
【中文标题】SQLSTATE [01000]:警告:1265 列的数据被截断【英文标题】:SQLSTATE[01000]: Warning: 1265 Data truncated for column 【发布时间】:2018-06-08 15:12:02 【问题描述】:SQLSTATE[01000]:警告:第 1 行的“pay_totals”列的 1265 数据被截断
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');
刀片:
<input type="text" name="checkout_total" value="Cart::subTotal('0') ">
帮助
【问题讨论】:
此错误的根本原因在于 mysql,由于我们看不到有关您的数据库表的任何信息,因此我认为这个问题无法回答。最有可能的是,您正在尝试存储一些太宽而无法放入目标列的数据,而 MySQL 会就此发出警告。 应该使用 TEXT : chartio.com/resources/tutorials/… 【参考方案1】:问题是列pay_totals
无法存储您从输入中获得的任何内容,因为它太大了。
可能的解决方案
SQL: ALTER TABLE [orders] ALTER COLUMN [pay_totals] VARCHAR(MAX)
MYSQL: ALTER TABLE [orders] MODIFY COLUMN [pay_totals] VARCHAR(60000)
【讨论】:
【参考方案2】:由于数据类型不匹配,可能会出现同样的错误。例如,如果您将字符串分配给浮点数,您将收到此错误。所以一定要检查数据的类型是否正确。我在 symfony 上遇到了这个错误。
【讨论】:
【参考方案3】:有时会发生此错误,因为将数据插入到数据透视表中的 ('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);
代码更正
$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);
【讨论】:
以上是关于SQLSTATE [01000]:警告:1265 列的数据被截断的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE [01000] SQLDriverConnect:0 [unixODBC] [驱动程序管理器]无法打开库“IBMDB2”:找不到文件
点燃odbc SQLSTATE [01000]错误如何解决?
连接失败: SQLState:'01000' SQL Server 错误: 53 [Microsoft][ODBC SQL Server Driver][DBNETLIB]Connec
spring MVC + Ibatis 连接DB2 数据库 出现警告信息
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parame
收到警告:SQL 错误:1205,SQLState:41000 错误:超过锁定等待超时;尝试重新启动事务。使用休眠保存记录