【问题标题】:Data truncated for column列截断数据
【发布时间】:2017-03-24 00:15:36
【问题描述】:

您好,我尝试在我的表上插入来自 phpmyadmin 的数据,但出现这样的错误

1 row affected. Warning: #1265 Data truncated for column 'value' at row 1

因为我的故事是这样的

    CREATE TABLE IF NOT EXISTS `setting` (
  `setting_id` int(11) NOT NULL,
  `store_id` int(11) NOT NULL DEFAULT '0',
  `group` varchar(32) COLLATE utf8_bin NOT NULL,
  `key` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
  `value` text COLLATE utf8_bin NOT NULL,
  `serialized` tinyint(1) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=28279 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

我尝试输入大约 5000 个数据,当我尝试插入它说错误数据截断时,我可以输入大约 2000 个数据。

【问题讨论】:

  • 向我们展示您的 INSERT 查询..
  • 我认为您的 value 列的数据大于其限制 (64 kB)

标签: mysql sql phpmyadmin


【解决方案1】:

为列截断数据显然意味着您的数据太宽而无法放入指定的列。它用于value 字段,其类型为text,文本字段只能容纳65K 的数据。你需要一个更大的类型。也许 MEDIUMTEXT 可以容纳 16MB 的数据。

顺便说一句,因为您实际上是在列中存储二进制数据。 MEDIUMBLOB 实际上可能是更好的选择。

最后但同样重要的是:

http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-optimization-tips.html

使用 Web 服务器,将图像和其他二进制资产存储为文件,使用 存储在数据库中的路径名,而不是文件本身。最多 与数据库内容相比,Web 服务器更擅长缓存文件,因此 使用文件通常更快。 (尽管您必须处理备份和 在这种情况下,您自己的存储问题。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-09
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多