[MySQL]--MySQL表中某个列插入数据总被截断,报编码方式的语法错误,实际是column的not null属性和更改编码语法导致的冲突。

  MySQL的编码方式中,常用的有gb2312<gbk<utf8。

  MySQL的编码方式的查看,常用三个参数:character_set_client, character_set_connection ,character_set_result.

  

  查询goods表的列的编码情况: show full columns from goods;

  

  在三个参数一样的情况下,发现goods表中的goods_name的值被截断了,单独插入一行数据的时候,报字符编码错误。

  

  用alter table change语法来修改列的默认字符集,结果报错ERROR 1064. 自己没发现语法错在什么地方。

    mysql> alter table goods change goods_name goods_name varchar(120) not null character set utf8 ;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘character set utf8‘ at line 1
    mysql>

  

  后来去掉了not null之后,发现更新字符集语句可以正常更新了

  mysql> alter table goods change goods_name goods_name varchar(120) not null character set utf8 ;
  ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘character set utf8‘ at line 1
  mysql>
  mysql>
  mysql>
  mysql> alter table goods change goods_name goods_name varchar(120) character set utf8 ;
  Query OK, 0 rows affected (0.08 sec)
  Records: 0 Duplicates: 0 Warnings: 0

  

  

  

原文地址:https://www.cnblogs.com/gaochsh/p/12398243.html

时间: 2024-08-02 06:42:57

[MySQL]--MySQL表中某个列插入数据总被截断,报编码方式的语法错误,实际是column的not null属性和更改编码语法导致的冲突。的相关文章

mysql互换表中两列数据

在开发过程中,有时由于业务等需要把一个表中的两列数据进行交换. 解决方案 使用update命令,这完全得益于MySQL SQL命令功能的强大支持. 表格中原来数据类似如下: select * from product; +----+--------+| id | name   | original_price | price  | +----+----+--------+|  1 | 雪糕   |           5.00 |   3.50 | |  2 | 鲜花   |          

mysql互换表中两列数据方法

1.创建表及记录用于测试 CREATE TABLE `product` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', `name` varchar(50) NOT NULL COMMENT '产品名称', `original_price` decimal(5,2) unsigned NOT NULL COMMENT '原价', `price` decimal(5,2) unsigned NOT NULL COMME

文本文件导入mysql数据库表及insert命令插入数据到表

1.文本文件导入数据库表 格式:mysql> LOAD DATA LOCAL INFILE '文本路径' INTO TABLE 表名; 例:mysql> LOAD DATA LOCAL INFILE 'D:/pet.txt' INTO TABLE pet; <pre name="code" class="plain">可以创建一个文本文件"pet.txt",每行包含一个记录,用定位符(tab)把值分开,并且以CREATE

mysql中对表操作----为所有列插入数据

     为所有列插入数据 通常情况下,向数据表中插入数据应包含表中所有字段,也就是为表中所有字段添加数据,为表中所有字段添加数据有以下两种方式. 1.INSERT语句中指定所有字段名 使用INSERT语句列出表的所有字段可以向表中插入数据,语法格式如下所示. INSERT INTO 表名(字段名1,字段名2,……) VALUES(值1,值2,……); 以上示例中,“字段名1,字段名2”是数据表中的字段名称,“值1,值2”是对应字段需要添加的数据,每个值的顺序.类型必须与字段名对应. 首先,创建

使用Sqoop1.4.4将MySQL数据库表中数据导入到HDFS中

问题导读:         1.--connect参数作用? 2.使用哪个参数从控制台读取数据库访问密码? 3.Sqoop将关系型数据库表中数据导入HDFS基本参数要求及命令? 4.数据默认导入HDFS文件系统中的路径? 5.--columns参数的作用? 6.--where参数的作用? 一.部分关键参数介绍 参数介绍 --connect <jdbc-uri> 指定关系型数据库JDBC连接字符串 --connection-manager <class-name> 指定数据库使用的管

在MySQL向表中插入中文时,出现:incorrect string value 错误

在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8.      一.修改数据库的默认字符集        ALTER DATABASE db_name DEFAULT CHARCTER SET character_name [COLLATE... ] 例子:ALTER TABLE db_mysql DEFAULT CHARCTER SET gbk          注释: (COLLATE是字

MySQL为数据表的指定字段插入数据

username not null 没有默认值/有默认值   insert不插入username字段 均不报错 2014年07月23日21:05    百科369 MySQL为数据表的指定字段插入数据 为数据表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其它字段的值为数据表定义时的默认值. 基本的语法格式如下: INSERT INTO 表名(字段1,字段2,...,字段m) VALUES(值1,值2,...,值m); 字段1,字段2,...,字段m:表示数据表中的字段名称

PHP mysql 删除表中所有数据只保留一条

DELETE FROM `logs` WHERE wangzhi='www.juhutang.com' and id<>101072; 上面这段代码的意思为 删除表logs中 所有字段wangzhi含内容为www.juhutang.com的数据.但是不删除同表中 id 是101072 的这条数据. 当然了 我是新手,这条语句可能与标题不是那么完善, 希望大牛解答,删除表中所有数据,保留最近的一条 或者说只保留主键ID最大的一条. 这语句如何写. PHP mysql 删除表中所有数据只保留一条

mysql查看表中列信息

查看所有数据库中所有表的数据库名和表名 SELECT `TABLES`.`TABLE_SCHEMA`, `TABLES`.`TABLE_NAME` FROM `information_schema`.`TABLES` 查看所有数据库中所有基本表的数据库名和表名 SELECT `TABLES`.`TABLE_SCHEMA`, `TABLES`.`TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLES`.`TABLE_TYPE` =