vlambda博客
学习文章列表

【踩坑实录】mysql新增联合主键报错

mysql新增联合主键报错:

error:(1265)mysql data truncated for column(表字段长度已经调整到足够长度) 

有可能是因为表中这个字段已经包含空数据了,主键要求非空,可以先将数据修改为字符串的null,之后再进行修改。

update rpt_yyyq_uv_activity_day set app_code ='null' where app_code is null;

复合主键:

alter table tb_name add primary key (字段1,字段2,字段3);

查看mysql是否安装了innodb插件。

show plugins;

如果发现没有安装innodb插件,可以执行下面语句进行安装: 

install plugin innodb soname 'ha_innodb.so';

查看mysql现在已提供什么存储引擎:

show engines;

查看mysql当前默认的存储引擎:

show variables like '%storage_engine%';

看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):

show create table 表名;

如何将MyISAM库导成INNODB引擎格式的:

在备份出的xxx.sql文件中把ENGINE=MyISAM全换成ENGINE=INNODB

再次导入就可以了。

转换表的命令:

mysql> alter table 表名 engine=innodb;

alter table  ynrpt.rpt_yyyq_client_info engine=MyISAM;

有上面可以查到看,本机mysql使用的存储引擎是默认的MyISAN,由于业务需要,先要将其存储引擎改为Innodb。

操作记录如下:

1)以安全模式关闭mysql

[root@dev mysql5.1.57]# mysqladmin -uroot -p shutdown

Enter password: 

[root@dev mysql5.1.57]# ps -ef|grep mysql

2)备份my.cnf

[root@dev mysql5.1.57]# cp my.cnf my.cnf.old

3)修改my.cnf配置文件

[root@dev mysql5.1.57]# vim my.cnf

.....

[mysqld]                                        //在这个配置区域添加下面一行,指定存储引擎为innodb

default-storage-engine = InnoDB

4)删除/mysql/data目录下的ib_logfile0,ib_logfile1。删除或剪切到别处都行。

[root@dev var]# mv ib_logfile0 ib_logfile1 /tmp/back/

5)启动mysql,登陆mysql验证存储引擎是否已切换

[root@dev var]# /Data/app/mysql5.1.57/bin/mysqld_safe --defaults-file=/Data/app/mysql5.1.57/my.cnf &

mysql> show variables like '%storage_engine%'; +----------------+--------+ | Variable_name  | Value  | +----------------+--------+ | storage_engine | InnoDB | +----------------+--------+ 1 row in set (0.00 sec)