SQLite转储中的CREATE TABLE语法(1064)出错

时间:2013-07-10 02:22:12

标签: mysql

我在从SQLite3导入转储时出现问题,我通过一个脚本来消除大部分冲突,但仍有一些仍然存在。

ERROR 1064 (42000) at line 558774: 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 'MONTH NOT NULL,
    grade INTEGER,
    school INTEGER REFERENCES school(id),
   ' at line 4

它似乎不是a quoting issue,有些悬挂逗号等等。

第558774行是month行:

...
INSERT INTO census_block VALUES(1234,-0.32,1.47,NULL,NULL);
INSERT INTO census_block VALUES(5678,-0.43,-0.24,NULL,NULL);
CREATE TABLE history(
    sid INTEGER NOT NULL REFERENCES student(sid),
    year YEAR NOT NULL,
    month MONTH NOT NULL,
    grade INTEGER,
    school INTEGER REFERENCES school(id),
    assigned_school INTEGER REFERENCES school(id),
    census_block INTEGER REFERENCES census_block(id)
);
INSERT INTO history VALUES(2319802,1991,9,9,1470,NULL,2468);
INSERT INTO history VALUES(2319802,1992,5,9,1470,NULL,3692);
...

2 个答案:

答案 0 :(得分:1)

MySQL中没有Month数据类型。相反,请为Integer列使用month

CREATE TABLE history(
    sid INTEGER NOT NULL REFERENCES student(sid),
    year YEAR NOT NULL,
    month INTEGER NOT NULL,
    grade INTEGER,
    school INTEGER REFERENCES school(id),
    assigned_school INTEGER REFERENCES school(id),
    census_block INTEGER REFERENCES census_block(id)
);

答案 1 :(得分:1)

月份不是合法的数据类型。将其更改为int或smallint,即month int