2017-03-26 5 views
1

私が始めたコードがありますが、私のエラーによると、私はデフォルトに垂直に定義する必要がある部分でうんざりしています。私は自分の本でこれを探してみましたが、それは垂直のデフォルトはもちろん、デフォルトの値を追加することさえしませんでした。例では、email_frequencyのデフォルト値は15です。私はこれが単純な構文エラーだと思っていますが、私の本のどこにでもデフォルトの列を定義する方法を見つけることができません。SQL垂直のデフォルトを持つテーブルを作成する

予想される出力を添付して、これまでエラーを修正したコードを添付します。

予想の答え:

+-----------------+---------------------+------+-----+----------+-------+ 
| Field   | Type    | Null | Key | Default | Extra | 
+-----------------+---------------------+------+-----+----------+-------+ 
| user_id   | int(7)    | NO |  | NULL  |  | 
| email_frequency | tinyint(2) unsigned | YES |  | 15  |  | 
| layout   | varchar(70)   | YES |  | vertical |  | 
| updated_at  | datetime   | YES |  | NULL  |  | 
+-----------------+---------------------+------+-----+----------+-------+ 

コード私がこれまで持っている:

CREATE TABLE settings (
user_id INT(7) NOT NULL, 
email_frequency TINYINT(2) UNSIGNED DEFAULT 15 NULL, 
layout VARCHAR(70) DEFAULT VERTICAL NULL, 
updated_at YYYY-MM-DD HH:MI:SS NULL 
); 

エラー:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 'VER 
TICAL NULL, 
updated_at YYYY-MM-DD HH:MI:SS NULL 
)' at line 4 
+2

カンマを逃しています。 – Siguza

+0

ああ私のゴシック。私は気が気になりません。 –

+0

さて、私はコンマでそれを更新しました、そして私が最初に得ていたエラーは、垂直のステートメントの近くにあります。 –

答えて

0

いくつかのことが間違ってここにあります

    それが列定義の間に単一引用符( '
  1. あなたが不足しているコンマ(,)で表される必要があるので、0
  2. updated_atのデータ型があるべき、文字列リテラル「垂直」でなければなりませんdatetime
  3. だから、

CREATE TABLE settings (
    user_id INT(7) NOT NULL, 
    email_frequency TINYINT(2) UNSIGNED DEFAULT 15 NULL, 
    layout VARCHAR(70) DEFAULT 'VERTICAL' NULL, 
    updated_at DATETIME NULL 
); 
+1

ありがとうございます。説明してくれてありがとう。これは非常に役に立ちました。 –

関連する問題