mysql workbench插入表数据时有中文就报错,怎么解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql workbench插入表数据时有中文就报错,怎么解决相关的知识,希望对你有一定的参考价值。
“使用命令行方式登陆到mysql服务器,建立一个数据库,数据库编码设为utf-8。此时,如果直接在命令行窗口使用insert语句插入中文,就遇到类似
error
1406
(22001):
data
too
long
for
column
'name'
at
row
1
错误。乍一看,是字段长度引起的问题,但是实际是字符编码的问题。可是尝试以下解决方法:
1、在linux中,使用终端方式登陆mysql服务器,运行以下命令:
set
names
utf8;
该命令将终端的字符编码设为了utf-8。此后再插入数据库中的内容都会按照utf-8的编码来处理。
注意:在linux中,终端方式中直接插入中文内容,可能并不会出现1406错误,但是这时插入的数据
是按照系统的默认编码进行处理。因此对编码为utf-8的数据库,在显示数据的地方可能会出现乱码。
2、在windows下,命令行窗口不支持utf-8编码,所以使用“set
names
utf8;”不会达到转化中文的
效果。但是这个问题还是可以解决的:
(1)使用默认编码建立数据库。这种情况下就可以直接输入中文了,但是相应的问题,就是会 参考技术A 亲,你好。把数据库、表、字段的字符集都设置统一(如UTF8)后可解决。
为啥 MySQL Workbench 表数据导入向导会导入 0 条记录?
【中文标题】为啥 MySQL Workbench 表数据导入向导会导入 0 条记录?【英文标题】:Why would MySQL Workbench Table Data Import Wizard import 0 records?为什么 MySQL Workbench 表数据导入向导会导入 0 条记录? 【发布时间】:2016-07-23 11:50:14 【问题描述】:我对 MySQL 非常缺乏经验,并且遇到了很多问题。我在 Linux Mint 17.3 上使用 MySQL Workbench 6.3。
我正在尝试使用表数据导入向导将 CSV 文件导入表中。这适用于简单的表,但不适用于更复杂的表。
我正在纠正导入向导中的所有内容,以确保每一行和每一列都是完美的。一开始似乎可行,导入我的~14000行需要时间,有磁盘活动并且没有报告错误,但最后:
“导入 0 条记录”
表格和以前一样保持空白。
如果我导入到 new 表中,一切都会按预期工作,这令人沮丧。我注意到数据类型是完全不同的。我试图强制 .CSV 文件中的数据类型对应于预期的内容。我还确保“NULLABLE=NO”字段中确实包含某些内容。但是如果我违反了这些规则中的任何一个,会不会有错误?我什至尝试只导入一行,认为可能在这个大表的某个地方有一些坏数据,但我什至无法导入一行。
为什么没有错误,但“0 条记录导入”到现有表中,但在新表中一切正常?
如果我没有提供足够的信息,我提前道歉。
谢谢。
【问题讨论】:
数据类型完全不同是有意义的。什么样的差异?为什么不将数据导入到新表中,然后从那里导入到您的真实表中,在此过程中进行任何必要的数据类型转换? 不同之处在于现有表使用“varchar”或“timestamp”数据类型,而新表使用“text”。此外,新表使用“int”和“bigint”,而现有表使用“double”,并且有一个“bit”实例。我将学习在转换数据类型时尝试从一个表导入到另一个表,现在它们都是有效的 MySQL 表可能会更容易。谢谢你,肯。 原来数据有很多问题。仅仅转换它是不够的。我最终进入“更改表”并尝试更改每列的属性以使两个表匹配。这导致当我设置“NOT NULL”时找到很多 NULL 值,然后在我设置“UNIQUE”时找到很多重复值。在纠正这些之后,其他表中仍然有一些对 UUID 的引用,然后我还发现有一列需要 UUID 而不仅仅是唯一的数字。最后,当两个表匹配时,我将新数据导入到现有表中。 【参考方案1】:解决方案是在每次导入时导入约 2000 条记录。我相信数据库存在内存问题。我遇到了同样的情况,我上传了大约 9000 条记录。包括数据类型在内的一切都很完美。
【讨论】:
以上是关于mysql workbench插入表数据时有中文就报错,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章
mysql workbench如何把已有的数据库导出ER模型
Mysql workbench数据库里数据只读不能修改删除添加,怎么弄