2012-02-11 23 views
6

私はPDOを使用して、私のアプリケーションのサポートMySQLとSQLiteの両方をしようが、私は私のデータベーススキーマをインポートしようとすると、sqliteの中で、私はこのエラーを取得しています:SQLite構文はMySQLと互換性がありませんか?

SQLSTATE[HY000]: General error: 1 near "AUTO_INCREMENT": syntax error

クエリは次のようになります。

CREATE TABLE events (

    id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    name VARCHAR(32) NOT NULL, 
    title VARCHAR(64) NOT NULL, 
    description LONGTEXT, 
    starttime DATETIME DEFAULT '0000-00-00 00:00:00', 

    PRIMARY KEY(id), 
    KEY name(name) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

(と、それはMySQLデータベースで動作します。)

私はこの問題はここにあるかを理解していませんか?どちらのデータベースシステムにも互換性があるはずはありませんか?

+0

[SQLiteのAUTOINCREMENTのドキュメント](http://www.sqlite.org/autoinc.html)をAUTO_INCREMENTない - 自動インクリメントはANSIではありません、配列は、ごく最近でした連続値生成を処理するためのANSIを作成しました。 –

+0

あなたは彼らが同じだと思ったのは何ですか?それぞれのRDBMSには、それほど厄介なものがあるように思われるので、あなたはこの種の問題にぶつかります。ここではAUTOINCREMENTに関するsqliteのドキュメントです:http://www.sqlite.org/autoinc.html –

答えて

2

いいえ、完全に異なる機能をサポートしています。最も重要な違いは、SQLiteはdynamic data typesを使用しますが、MySQLはstatic data typesを使用しますが、他にも多くの違いがあります。

しかし、どちらもSQLの共通サブセットをサポートしているため、両方のシステムで動作する単純なSQL文を記述することは可能です。

5

AUTO_INCREMENTはMySQLに固有です。 SQLiteは明らかに似たようなものを持っています、AUTOINCREMENT

+0

ok私はそれを変更しましたが、同じエラーが発生しました... "AUTOINCREMENT"の近く: – Alex

+2

' id INT NOT NULL PRIMARY KEY AUTOINCREMENT'。私はSQLiteに悩まされたことはありません。私はちょうどGoogleに知っている。 :) – cHao

+0

私はすべてのエラーtxを修正することができました:) – Alex

4

ANSI SQL標準規格に関しては、すべてのSQLデータベースがことを遵守すべきと彼らは適合するものでなければなりません。ただし、AutoIncrementはその標準の一部ではなく、一部のデータベース(MySQLを含む)によって実装されている追加の機能です。すべてのデータベースがその機能を提供しているわけではなく、異なる方法で、または異なる構文で提供するデータベースもあります。

3

残念ながら、SQLは標準である必要がありますが、各データベースの実装は異なり、独自の特性を持つため、SQLite上で動作するようにクエリを調整する必要があります。 SQLiteので

関連する問題