2012-02-11 10 views
6

मैं पीडीओ उपयोग कर रहा हूँ और अपने आवेदन समर्थन दोनों 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) - autoincrement है नहीं एएनएसआई, दृश्यों हाल ही में थे अनुक्रमिक मूल्य उत्पादन को संभालने के लिए एएनएसआई बनाया। –

+0

आपको क्या लगता है कि वे वही थे? प्रत्येक आरडीबीएमएस में इसका अपना छोटा मोड़ लगता है, इसलिए आप इस तरह के मुद्दों में भागने जा रहे हैं। यहां ऑटोमेशन पर स्क्लाइट दस्तावेज है: http://www.sqlite.org/autoinc.html –

उत्तर

2

नहीं, वे सुविधाओं का एक पूरी तरह से अलग सेट का समर्थन करते हैं। सबसे महत्वपूर्ण अंतर यह है कि SQLite dynamic data types का उपयोग करता है जबकि MySQL static data types का उपयोग करता है, लेकिन कई अन्य अंतर भी हैं।

हालांकि वे दोनों SQL के एक सामान्य सबसेट का समर्थन करते हैं, इसलिए कुछ सरल SQL कथन लिखना संभव है जो दोनों प्रणालियों में काम करेंगे।

5

AUTO_INCREMENT MySQL- विशिष्ट है। SQLite स्पष्ट रूप से एक समान बात है, AUTOINCREMENT

+0

ठीक है मैंने इसे बदल दिया है, लेकिन अब मुझे एक ही त्रुटि मिलती है ... 'निकटतम "ऑटोमेशन": ' – Alex

+2

आपको' आईडी में प्राथमिक प्राथमिक कुंजी नहीं है। मैंने कभी SQLite से परेशान नहीं किया है; मैं सिर्फ Google को जानता हूँ। :) – cHao

+0

मैं सभी त्रुटियों को ठीक करने में कामयाब रहा :) – Alex

4

वे संगत होना चाहिए ANSI SQL मानकों का संबंध है, और सभी SQL डेटाबेस कि का पालन करना चाहिए के रूप में। हालांकि, ऑटोइनक्रिएटमेंट उस मानक का हिस्सा नहीं है, लेकिन कुछ डेटाबेस (MySQL सहित) द्वारा लागू एक अतिरिक्त सुविधा है। सभी डेटाबेस उस सुविधा को प्रदान नहीं करते हैं, या इसे अलग तरीके से, या विभिन्न वाक्यविन्यास के साथ प्रदान कर सकते हैं।

3

दुर्भाग्यवश हालांकि एसक्यूएल मानक होना चाहिए, प्रत्येक डेटाबेस कार्यान्वयन अलग है और इसकी अपनी विशिष्टताएं हैं, इसलिए आपको इसे SQLite पर काम करने के लिए अपनी क्वेरी व्यवस्थित करना होगा।

संबंधित मुद्दे