我在使用MySQL创建数据库的时候遇到了问题(MySQL 5.0,Navicat 8):
我对数据库了解不深,需要使用MySQL创建一个数据库。我选择了使用工具,先使用了powerdesigner建立概念模型(MySQL已装并且配置完毕),然后生成物理模型TlcomCRM(名字),打开navicat的连接,创建TlcomCRM数据库,进入控制台,将前面物理模型的脚本(右键中的property内容)粘贴复制过来,确定,生成相应的表及其约束关系,期间由于业务的不熟悉,对表和他们之间的关系作出了多次修改。
    修改完成之后,导出存储为SQL脚本,为验证是否可行,另行创建一个数据库,进入控制台,运行该SQL脚本,OK,没有任何问题,生成的数据库一样。
    接下来出入测试数据,我是直接在navicat中向表中添加数据,然后再导出SQL脚本。这个时候出现了第一个问题:数据插入完成之后,如果我整个数据库一起导出,则脚本中INSERT语句中的汉字全部为乱码,一张一张表导出,则正常。
    导出之后,照例我要先验证能够由脚本正确生成数据库。最开始,我是直接将插值的SQL语句一张表一张表复制到初始脚本(没有数据)的后面,然后测试了一下,多出地方报错。此时我想,是不是由于表与表之间存在约束关系,对数据插入的顺序有限制,基于此想法,我根据设定的关系调整了数据的插入顺序,还是很多地方报错,全部倒是1064号错误和1292号错误。
    1064错误的例子如下:
建表语句:
 CREATE TABLE `enterprise_info` (
  `Company_Name` varchar(50) NOT NULL,
  `Company_Type` varchar(8) default NULL,
  `Company_Proportion` varchar(16) default NULL,
  `Company_IsListed` varchar(2) default NULL,
  `Company_MarketValue` double default NULL,
  `Company_RegisteredCapital` double default NULL,
  `Company_FixedAssets` double default NULL,
  `Company_NetAssets` double default NULL,
  `Company_Corporate` varchar(20) default NULL,
  `Company_CorporateStaffNum` bigint(20) default NULL,
  `Company_History` mediumtext,
  `Company_Re` varchar(255) default NULL,
  `Company_DelRecord` int(11) default '0',
  PRIMARY KEY  (`Company_Name`),
  KEY `Company_CorporateStaffNum` (`Company_CorporateStaffNum`),
  CONSTRAINT `enterprise_info_ibfk_1` FOREIGN KEY (`Company_CorporateStaffNum`) REFERENCES `staff_info` (`Staff_Num`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;插值语句如下:
INSERT INTO enterprise_info
   (`Company_Name`, `Company_Type`, `Company_Proportion`, `Company_IsListed`, `Company_MarketValue`, `Company_RegisteredCapital`, `Company_FixedAssets`, `Company_NetAssets`, `Company_Corporate`, `Company_CorporateStaffNum`, `Company_History`, `Company_Re`, `Company_DelRecord`)
VALUES
   ('中国电信', '国有企业', '世界五百强', '1', 123456789000, 10000000000, 20000000000, 80000000000, '王旭', , '公司成立于1956年,已成为世界500强之一', '', 0);出错描述:ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '公司成立于1956年,已成为世界500强之一', '', 0)' at line 4
请问:上面的问题处在出在什么地方?应该如何解决?