Navicat for MySql使用中遇到的问题汇总(持续更新中2022.09.10)

笔者近期在用Navicat for MySQL进行数据库设计,遇到相关问题会记录在此篇随笔中,持续更新中...

1.使用Navicat相关功能时的问题

1.1导入Excel后中文字符变为“?”符号,请逐一检查以下地方

①右键点击数据库选择编辑数据库,确认字符集是utf8

②右键点击表选择“设计表”--->“选项”,确认字符集是utf8

③继续在“设计表”中选择字段,逐一确认字段的字符集是utf-8

④最后确认导入的文件的编码规则是utf-8

2.没有错误代码的报错

2.1“Incorrect table definition; there can be only one auto column and it must be defined as a key”

表定义不正确;只能有一个自动列,必须将其定义为主键。

属于在数据库迁移和修改表结构时容易出现的错误,只需将自增字段设置为“主键”即可。

 

3.有错误代码的报错

3.1“1067”服务器启动错误

出现在mysql服务启动时

解决方案:查看日志

 

 查看日志后发现是3306端口被占用

通过命令查找某一特定端口,在命令窗口中输入命令中输入netstat -ano |findstr "3306",然后回车就可以看到3306端口被哪个应用占用。

 

 找到后结束这个应用,再在命令行输入net start mysql,启动成功!

3.2 “1062”主键冲突 Duplicate entry ‘%s’ for key %d

错误原因:主键冲突,主键值具有唯一性
解决方法:’PRIMARY’主键的值不能相同

 

检查mysql的字符集配置:

show variables like 'collation_%';
show variables like 'character_set_%';

结果运行正常的utf-8,报错的是latin1

 

解决方法:

1. 打开mysql的配置文件my.cnf

2. 在[client]下面加上一行:

default-character-set=utf8

3. 在[mysqld]下面也加上:

default-character-set=utf8

4. 保存关闭后重启mysql:

service mysql restart

再次查看mysql的字符集,应该变成utf8了。

3.3 MySQL 1833

-cannot change colu 'id' : used in foreign key constraint'FK_XX' of table 'XXX'

然后数据库中修改这个表字段为自增时报1833错误

详细分析:

错误:ERROR 1833 (HY000): Cannot change column 'up_user_id': used in a foreign key constraint 'ih_order_info_ibfk_1' of table 'ihome.ih_order_info';

原因:涉及修改外键引用的表,是需要两个表处于锁定状态修改保证外键机制的,关键点是删除外键时候没有锁表导致外键并不是真正的删除,所以修改还是不成功;

 

解决方法;

①锁表

lock tables ih_order_info write,ih_user_profile write;

②删除外键

③修改外键参考字段的值,避免error 1452(插入外键字段的字段值在主键字段中不存在)

④再次更改column‘id’,此时不报错,然后重新添加外键

⑤最后,解锁表

unlock tables;

posted @ 2022-03-09 22:55  Fancy[love]  阅读(717)  评论(0编辑  收藏  举报