1

我想知道我的 sql 语法有什么问题。它在 mysql 上工作,但对于 sqlite 给我错误。

CREATE TABLE IF NOT EXISTS `points` (
                                     `id` int(11) NOT NULL AUTO_INCREMENT, 
                                     `name` varchar(50) CHARACTER SET latin1 NOT NULL, 
                                     `longitude` double NOT NULL, 
                                     `latitude` double NOT NULL, 
                                     `radius` double NOT NULL, 
                                     `image` blob NOT NULL, 
                                     PRIMARY KEY (`id`)
                                    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=4;

INSERT INTO `points` (`id`, `name`, `longitude`, `latitude`, `radius`, `image`) 
VALUES      (1, 'Isfahan, Iran', 51.678314, 32.65036, 0.064486, 
             0xffd8ffe000104a46494600010001009600960000fffe001f4c45414420546563686e6f6c6f6769657320496e632e2056312e303100ffdb008400100b0c0e0c0a100e0d0e1211101318281a181616183123251d283b343e3d3a34393841495d4f414558463839516f52586063696a693f4e737b72667a5d676964011112121815182f1a1a2f644339436464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464ffc4003000000203010000000000000000000000000001020304050101010101010100000000000000000000000102030405ffc20011
4

1 回答 1

3
  1. 应该是AUTOINCREMENT一个字。

  2. 您不需要此语句:ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=4;这是 MySQL 特定的。此外,如果您将自动增量值设置为从 5 开始,则不应插入值等于 1 的 id。

  3. 在插入语句之后似乎没有右括号。

您应该尝试:

CREATE TABLE IF NOT EXISTS `points` (
                                     `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
                                     `name` varchar(50) CHARACTER SET latin1 NOT NULL, 
                                     `longitude` double NOT NULL, 
                                     `latitude` double NOT NULL, 
                                     `radius` double NOT NULL, 
                                     `image` blob NOT NULL
                                    );

INSERT INTO `points` (`id`, `name`, `longitude`, `latitude`, `radius`, `image`) 
VALUES      (1, 'Isfahan, Iran', 51.678314, 32.65036, 0.064486, 
             0xffd8ffe000104a46494600010001009600960000fffe001f4c45414420546563686e6f6c6f6769657320496e632e2056312e303100ffdb008400100b0c0e0c0a100e0d0e1211101318281a181616183123251d283b343e3d3a34393841495d4f414558463839516f52586063696a693f4e737b72667a5d676964011112121815182f1a1a2f644339436464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464ffc4003000000203010000000000000000000000000001020304050101010101010100000000000000000000000102030405ffc20011);

可能还需要更多修复。虽然 SQLite 可以识别反勾号,但它是 MySQL 特定的引用。

于 2012-08-30T20:33:01.843 回答