1. 程式人生 > >Navicat for SQL使用注意(設定預設字符集,外來鍵儲存不了)

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