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 固有です。さらに、autoincrement 値を 5 から開始するように設定している場合、1 に等しい値の ID を挿入するべきではありません。

  3. insert ステートメントの後に閉じ括弧がないようです。

代わりに試してください:

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 に答える