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
然后数据库中修改这个表字段为自增时报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;