製作.sql腳本時候出現的問題!

最近公司需要對一個項目的數據庫做一個SQL腳本,好讓一次性就創建所有表。

原本以爲只是創建表就可以了,但是還是出了點問題(現在記下來):

我用的工具:Navicat for mysql 

步驟:

①先用工具把之前項目的數據導成.sql 文件。

②再把.Sql文件中的insert語句去掉。

③最後剩下的就可以創建表的SQL了。

④用工具導入.sql文件,生成空表!

    that's OK!

過程中出現的問題:

 1:報錯

Cannot delete or update a parent row: a foreign key constraint fails  

     這個報錯的源頭是:Mysql在InnoDB中設置了foreign關聯,造成無法更新或刪除數據。

    解決方案:在.sql文件頭加:Set FOREIGN_KEY_CHECKS=0;

  2:報錯

data too long for column 'name' at row 1

    這個報錯的源頭是:由於在創建的時候想插入數據,有中文的話,就會報'name'過長。但是原因不是這個,是因爲編碼不一致造成。

    解決方案:網絡上衆說不一,也有許多解決辦法,我的方法是  使用工具來解決(哈哈,本人比較嫌麻煩,就依賴工具),

    直接在Navicat for Mysql中手動插入數據,就是中文的了,之前解決過我更新數據庫編碼不一的問題,非常方便

3:還有一些報錯

   過程中還有一些報錯就沒有記錄了,當時計較急。比如:對於多表關聯的數據庫,創建表的時候要考慮先後順序,關聯的表在之前創建。

   還有就是:遇到報錯在Drop表之前,我一直在找那一行,發現不是那行問題,是那行之前創建表的編碼設置時候的UTF8的時候,忘記了打分號(;);

4:知識

DROP TABLE IF EXISTS `aosa_account`;        //創建之前看是否已存在,存在則刪除
   CREATE TABLE `aosa_account` (
  `id` int(11) NOT NULL auto_increment,     //不爲空,自動增長
  `balance` double default '0',         
  `description` varchar(255) default NULL,  //varchar(可變長字符),缺省值爲null
  `name` varchar(255) NOT NULL,             //不爲空 
  `name_PY` varchar(255) NOT NULL,
  `status` bigint(20) default '0',         //bigint(大整數值) 缺省爲0
  `ugroup_id` int(11) NOT NULL,
   PRIMARY KEY  (`id`),                    //主鍵
   KEY `FKAAC83BEA2945A6E1` (`ugroup_id`),
   CONSTRAINT `FKAAC83BEA2945A6E1` FOREIGN KEY (`ugroup_id`) REFERENCES `aosa_ugroup` (`id`)   //約束關聯表等
  ) ENGINE=InnoDB AUTO_INCREMENT=87 DEFAULT CHARSET=utf8;  //下面詳述
  詳述:
  ENGINE=InnoDB AUTO_INCREMENT=87 DEFAULT CHARSET=utf8;
  ENGINE=InnoDB                            //選擇引擎,InnoDB是Mysql引擎

  AUTO_INCREMENT=87               //設定該字段爲自增字段,每次增加87(也可不寫)

  DEFAULT CHARSET=UTF8        //設置編碼爲UTF8

  數據庫的知識,在以後的"數據庫專欄"文章再做講解!
--------------有什麼錯誤或者問題的,請留言或者私信,希望大家一起進步。

參考:

http://bigwilly.blog.163.com/blog/static/173953547200971811438368/

http://blog.csdn.net/zhaopeipei1985/article/details/2633997

http://stevenjohn.iteye.com/blog/1451909

http://blog.sina.com.cn/s/blog_60407be101016tlw.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章