Navicat for SQL使用注意(设置默认字符集,外键保存不了)


最近用mysql+Navicat for sql开发项目时遇到了以下问题:

1.默认创建的数据库,字符集编码为:latin1 -- cp1252 West European

在数据库中存储中文时会出现乱码错误

2.用Navicat给数据库添加外键约束时,保存不了,保存后消失

解决方案:

1对于字符集问题有3种解决方式,设置字段字符集,表的字符集,数据字符集

其中设置字段字符集,表的字符集方法较笨,需要一个一个的设置,这里就简要说明下:

在navicat中选择要操作的表,选择“设计”,将光标放置在要修改的字段上,即可在下方修改该字段的字符集

同上,选择”设计“后,在选项中可以看到字符集一栏,修改后就完成了表的字符集修改

最后说下修改数据库的默认字符集,修改数据库的默认字符集必须在创建数据库的时候完成,如果数据库中已存在其他字符集的表,字段,则修改不会生效

如下图,在新建数据库时设置字符集

2.对于外键约束保存不了或者保存后消失的,有两个原因

1)数据库的FOREIGN_KEY_CHECKS=0;所有外键约束被禁用了

查看当前FOREIGN_KEY_CHECKS的值可用如下命令

    SELECT  @@FOREIGN_KEY_CHECKS;

之后再用

SET FOREIGN_KEY_CHECKS=1;

来启动外键约束.

2)在 MySQL 中只有 InnoDB 类型的表才支持外键与存储过程

所有要建立外键的字段必须建立索引

创建数据库时设置表类型为InnoDB

CREATE TABLE `roottb` (
`id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,
`data` VARCHAR(100) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) TYPE=InnoDB;

在Navicat中,新建表时,在选项中设置引擎为InnoDB

时间: 2024-10-13 02:03:39

Navicat for SQL使用注意(设置默认字符集,外键保存不了)的相关文章

为 MySQL 设置默认字符集(UTF-8)避免产生乱码

环境:Windows 7+Wamp Server+MySQL 5.7.9 查看MySQL默认编码: SHOW VARIABLES LIKE 'character%' character_set_client为客户端编码方式 character_set_connection为建立连接使用的编码 character_set_database数据库的编码 character_set_results结果集的编码 character_set_server数据库服务器的编码 只要保证统采用的编码方式一致,就

SQL Server中用SQL命令建表和主外键约束

建立dept和emp表,并用dept表中的dept_id设置为emp表的外键 create table dept ( dept_name nvarchar(20) not null, dept_address nchar(20), dept_id int constraint PK_dept primary key --dept表的主键,命名为PK_dept ) create table emp ( emp_name nvarchar(20) not null, emp_sex nchar(1)

mysql中通过my.cnf设置默认字符集utf-8

选项配置 配置文件路径:/full/path/mysql/bin/my.cnf (默认为/etc/my.cnf ) [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf

火狐浏览器如何设置默认字符集是utf-8?

在菜单面板定制里有一个字符编码的按钮,里面的unicode就是你要的,你最好还是在html里面指定字符集,就几个字的事情.

SQL 数据库 子查询、主外键

子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数: 另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表. 主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通

SQL反模式学习笔记5 外键约束【不用钥匙的入口】

2014-10-11 14:53:20 目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外键建立的索引会影响性能: 4.当前使用的数据库不支持外键.比如MySQL的MyISAM存储引擎,或者比SQLite3.6.19早的版本: 5.定义外键的语法并不简单,还需要查阅. 反模式:无视约束,即不使用约束 省略外键约束能使得数据库设计更加简单.灵活,或者

sql 语句系列(列举非索引外键)[八百章之第九章]

列举非索引外键 列举出那些外键没有添加索引. 目的: 1.减少锁. 2.外键添加索引,提示了查询性能,因为要与父表做连接查询做笛卡尔积. 下面只要会复制即可,没有会去从新写一遍的. select fkeys.table_name,fkeys.constraint_name,fkeys.column_name,ind_cols.index_name from ( select a.object_id,d.column_id,a.name table_name,b.name constraint_n

navicat设置外键

最近使用navicat设置外键发现保存以后会消失,然后各种百度发现问题了,表的引擎是MyISAM,InnoDB引擎才支持设置外键 如图打开表设计,在选项一栏选择InnoDB,然后保存,被关联的表同样需要设置InnoDB引擎 两个都引擎都设置好了以后,添加外键 保存的时候,报错,保存不了,仔细观察发现,a表和b表中外键关联字段类型有差异,a的主键是无符号的,b表的a_id字段是有符号类型,把b的a_id类型修改为无符号类型保存发现成功了,外键建立完毕.

Navicat在MySQL中添加外键详细过程

Navicat在MySQL中添加外键详细过程   /** *@author blovedr *功能: Navicat在MySQL中添加外键 *日期: 2018年6月21日   22:42 *注释: 学习数据库MySQL的点点记录, 谢谢网上各位大神分享经验,欢迎各位大神批评指导与交流. */   1. 打开Navicat连接上数据库, 并建立新的数据库:"test": 2. 在数据库"test"中创建两个表"emp"(主表)和"dept