1

SQL クエリ:

CREATE TABLE  `comment_threads` (
 `comment_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT  '0',
 `updated` TIMESTAMP NOT NULL ,
 `timestamp` TIMESTAMP NOT NULL ,
) ENGINE = MYISAM ;

これは、phpMyAdmin を介して HostGator で実行しようとしている古いファイルです。次のようなエラーが表示されます。

MySQL は次のように述べています: #1064 - SQL 構文にエラーがあります。5 行目の ') ENGINE=MyISAM' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

更新:ステートメントをこれに変更しても、エラーが発生します:

CREATE TABLE comment_threads (
comment_id INT( 11 ) UNSIGNED NOT NULL DEFAULT '0',
updated TIMESTAMP( 14 ) NOT NULL ,
timestamp TIMESTAMP NOT NULL
PRIMARY KEY ( comment_id ) )
ENGINE = MYISAM ;

エラーが発生します:

エラー 1064 (42000): SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

1 に答える 1

7

MySQL クエリが正しくありません。これに修正するとうまくいきます。

CREATE TABLE  `comment_threads` (
     `comment_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
     `updated` TIMESTAMP NOT NULL ,
     `timestamp` TIMESTAMP NOT NULL
  ) ENGINE=MyISAM;

これを phpMyAdmin で実行するには、組み込みのテーブル クリエーターを使用するか、SQL クエリ ウィンドウに修正された SQL ステートメントを入力します。

最後のTIMESTAMP NOT NULL行の後 (末尾の).

更新:投稿した2番目のステートメントはこれを修正します:

CREATE TABLE  `comment_threads` (
     `comment_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
     `updated` TIMESTAMP NOT NULL ,
     `timestamp` TIMESTAMP NOT NULL,
PRIMARY KEY(`comment_id`)
  ) ENGINE=MyISAM;

CREATE TABLE2番目の声明で紹介した問題は次のとおりです。

  1. TIMESTAMP( 14 )あるべきです(ドキュメントTIMESTAMPごと)
  2. 行 line の後にカンマが必要ですTIMESTAMP NOT NULLTIMESTAMP NOT NULL最初の例とは異なり、ステートメントが行とPRIMARY KEY宣言の 2 つの部分に分かれているため、カンマが必要になります。

SQL ステートメントをデバッグするための簡単な方法についての詳細情報が必要な場合は、この質問に対する私の回答を参照することを強くお勧めします(このようなエラーを整然と修正する方法に関するもう少し詳しい情報というタイトルのセクションを参照してください)。

CREATE TABLEステートメントまたはコードの一部を変更するときは、「一度に多くても 1 つのことを壊す」だけの十分な小さな増分で変更を加えることを確認してください。2 番目のCREATE TABLEステートメントの場合、最初の宣言を変更する理由はなく、変更するTIMESTAMPとコードが壊れました。その行は機能していました。変更する必要はありません。

于 2012-07-08T18:31:29.467 に答える