MYSQL写入中文错误 —— Data too long for column 'xxx' at row 1

本文介绍了因数据库编码不一致导致的PHP写入错误,并提供了解决方案,即通过调整编码设置来避免错误发生。
可以说这个错误提示还是比较让人迷糊的.
 
真正的错误原因:数据库编码不对.
 
在创建数据库时,整理选项选择了latin1以外的其他编码,这样在用PHP写入数据库时就会出现这种错误,因为mysql的默认编码是latin1.
 
解决方法:在写入数据库时,需要改边一下编码:mysql_query("set character set gbk");,这样就不会出现这个错误了,这种情况不需要按《解决phpmyadmin中文乱码问题》一文更改phpmyadmin设置,否则会中文会显示为问号.
 
如果整理选项没有改变,则默认为latin1,这样和MYSQL的默认编码方式相同,就不会有这种错误了.但是需要按《解决phpmyadmin中文乱码问题》设置一下.^_^
出现 `Data too long for column 'project' at row 1` 错误,通常是因为要插入到数据库 `project` 列的数据长度超过了该列定义的最大长度。以下是几种解决办法: #### 调整数据库字段长度 可以通过修改数据库表中 `project` 列的长度,使其能够容纳更长的数据。以 MySQL 为例,使用以下 SQL 语句修改字段长度: ```sql ALTER TABLE your_table_name MODIFY COLUMN project VARCHAR(255); -- 这里的 255 可以根据实际需求调整 ``` 这里假设 `your_table_name` 是表名,将 `project` 列的类型改为 `VARCHAR` 并设置合适的长度。 #### 截断数据 在使用 PhpSpreadsheet 读取数据后,对 `project` 列的数据进行截断处理,确保其长度不超过数据库字段的最大长度。示例代码如下: ```php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; $inputFileName = 'your_excel_file.xlsx'; $spreadsheet = IOFactory::load($inputFileName); $sheet = $spreadsheet->getActiveSheet(); $highestRow = $sheet->getHighestRow(); for ($row = 1; $row <= $highestRow; $row++) { $projectValue = $sheet->getCell('A' . $row)->getValue(); // 假设 project 数据在 A 列 $maxLength = 255; // 假设数据库字段最大长度为 255 if (strlen($projectValue) > $maxLength) { $projectValue = substr($projectValue, 0, $maxLength); } // 这里可以将处理后的数据插入数据库 } ``` #### 检查数据类型 确保数据库表中 `project` 列的数据类型能够容纳可能出现的最长数据。如果数据长度变化较大,可以考虑使用 `TEXT` 类型,示例 SQL 如下: ```sql ALTER TABLE your_table_name MODIFY COLUMN project TEXT; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值