制作.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值