#1064 mysql语法错误

时间:2014-05-09 03:38:27

标签: php mysql

导入我的sql文件时收到此错误报告。

这是错误报告:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'2)NOT NULL default'0.00'附近使用正确的语法,     employerhdmf decimal(12,2)NOT NULL默认值'0.00''在第8行

这是代码:

CREATE DATABASE kafik9; USE kafik9;

--
-- Table structure for table 'prlemphdmffile'
-- CREATE TABLE prlemphdmffile (   counterindex int(11) NOT NULL auto_increment,   payrollid varchar(10) NOT NULL default '',  
employeeid varchar(10) NOT NULL default '',   grosspay varchar(12,2)
NOT NULL default '0.00',   employerhdmf decimal(12,2) NOT NULL default
'0.00',     employeehdmf decimal(12,2) NOT NULL default '0.00',    
total varchar(12,2) NOT NULL default '0.00',   fsmonth tinyint(4) NOT
NULL default '0',   fsyear double NOT NULL default '0',    PRIMARY KEY
(counterindex) ) TYPE=InnoDB;

有人可以帮助解决这里出了什么问题吗?提前谢谢

2 个答案:

答案 0 :(得分:1)

第一个问题是varchar(12,2)。从您的评论中听起来像是decimal。您需要将两个匹配项更改为decimal(12,2)

接下来,TYPE=InnoDB需要ENGINE=InnoDB

此查询将起作用:

  CREATE TABLE prlemphdmffile (   
     counterindex int(11) NOT NULL auto_increment,   
     payrollid varchar(10) NOT NULL default '',  
     employeeid varchar(10) NOT NULL default '',   
     grosspay decimal(12,2) NOT NULL default '0.00',   
     employerhdmf decimal(12,2) NOT NULL default '0.00',     
     employeehdmf decimal(12,2) NOT NULL default '0.00',    
     total decimal(12,2) NOT NULL default '0.00',   
     fsmonth tinyint(4) NOT NULL default '0',   
     fsyear double NOT NULL default '0',    
     PRIMARY KEY(counterindex) ) ENGINE=InnoDB;

来自mysql documentation

CREATE TABLE customers (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;

The older term TYPE is supported as a synonym for ENGINE for backward compatibility, but ENGINE is the preferred term and TYPE is deprecated.

听起来TYPE 应该仍然有效,即使它已被弃用,但它在我的机器上无效。改为ENGINE就可以了。

<强>更新

正如@eggyal在评论中所指出的,上面的引用来自mysql 5.0 docs。有关详细信息,请参阅下面的评论。

答案 1 :(得分:0)

更改这些部分

grosspay varchar(12,2) NOT NULL -> grosspay decimal(12,2) NOT NULL

total varchar(12,2) NOT NULL -> total decimal(12,2) NOT NULL