0

MySQLからエクスポートした .sql ファイルがあります。を使用してそのテーブル構造をSQLiteに追加しようとしていますFMDB frameworkが、実行されず、常にreturn false. 構造は次のとおりです。

CREATE TABLE IF NOT EXISTS `admin` (
`admin_id` tinyint(4) NOT NULL AUTO_INCREMENT,
`first_name` varchar(30) NOT NULL,
`last_name` varchar(30) NOT NULL,
`email` varchar(30) NOT NULL,
`password` varchar(30) NOT NULL,
`date` datetime DEFAULT NULL,
`status` tinyint(2) NOT NULL,
PRIMARY KEY (`admin_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

ここで何が間違っていますか?

4

3 に答える 3

1

別のデータベースで MySQL 拡張機能を使用しようとしています。

少なくともadmin_idtype をINTEGERに置き換え、 に置き換えAUTO_INCREMENT、および設定AUTOINCREMENTを削除する必要があります。ENGINEDEFAULT CHARSET

于 2013-09-09T07:29:31.480 に答える
1

その SQL は、オンラインで文書化CREATE TABLEされている SQLite の構文に準拠していません。FMDBメソッド (に類似) を見ると、エラーに関する詳細が報告されます。lastErrorMessagesqlite3_errmsg

特に、AUTO_INCREMENT構文が正しくありません。それを修正しても、オプションENGINEDEFAULT CHARSETオプションも認識されません。少なくとも、次のようなことを試す必要があります。

NSString *sql = @"CREATE TABLE IF NOT EXISTS `admin` ("
                "`admin_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
                "`first_name` varchar(30) NOT NULL,"
                "`last_name` varchar(30) NOT NULL,"
                "`email` varchar(30) NOT NULL,"
                "`password` varchar(30) NOT NULL,"
                "`date` datetime DEFAULT NULL,"
                "`status` tinyint(2) NOT NULL"
                ")";

または、SQLite がこれらのデータ型の一部を理解できない場合 (SQLite の「動的型システム」では問題ありません)、日付を格納する予定の形式にvarchar(30)andTEXTtinyint(2)置き換えたいINTEGERと思うかもしれません。データ型のdatetime説明を参照してください。

于 2013-09-09T07:30:30.533 に答える