3

宿題があり、間違いを見つけようとしています。私はMySQLでテーブルを作成していますが、これの初心者です。提案してください!!

Create table computer_inventory 
( 
   assetnumber int(10) not null default “0”,
   manufacturer varchar(15) not null default ‘ ‘, 
   originalcost decimal(12,2) not null default “0”, 
   currentvalue decimal(12,2) not null default ‘0’, 
   boughtfrom varchar(20) not null default ‘ ‘, 
   instock tinyint(1) not null default ‘ ‘, 
   currentuser varchar(20) not null default ‘ ‘, 
   userphonenum varchar(13) not null default ‘ ‘, 
   boughtdate datatime not null default ‘ ‘ 
);

繰り返しますが、私は新しいので、多くのエラーがあるかもしれません。

**EDIT:** 

Create table computer_inventory ( 
      assetnumber int(10) not null default 0,
     manufacturer varchar(15) not null default ‘ ‘, 
     originalcost decimal(12,2) not null default 0, 
     currentvalue decimal(12,2) not null default 0, 
     boughtfrom varchar(20) not null default ‘ ‘, 
     instock tinyint(1) not null default 0, 
     currentuser varchar(20) not null default ‘ ‘,
     userphonenum varchar(13) not null default ‘ ‘,
     boughtdate datetime not null default ‘0000-00=00’ 
 );

MySQL 5.6 を使用しています。エラーは、「エラー 1064 (42000): SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。' ' の近くで、originalcost decimal(12,2) not null default 0, currentvalue decimal(1' at line 2 "

4

1 に答える 1

1

いくつかの間違いがありました... datetimeスペルが間違っていました。デフォルト値の一部も、列のデータ型が正しくありませんでした。

Create table computer_inventory 
( 
   assetnumber int(10) not null default 0,
   manufacturer varchar(15) not null default '', 
   originalcost decimal(12,2) not null default 0, 
   currentvalue decimal(12,2) not null default 0, 
   boughtfrom varchar(20) not null default '', 
   instock tinyint(1) not null default 0, 
   currentuser varchar(20) not null default '', 
   userphonenum varchar(13) not null default '', 
   boughtdate datetime not null  default '0000-00-00'
);

次にこの種の問題が発生した場合は、次のことを実行できます。最初に 1 つまたは 2 つの列だけでテーブルを作成してみてください。これらの行にエラーがない場合は、テーブルを削除して、さらにいくつかの列で再作成します。 . エラーが発生した場合、これにより、どの部分が正しくないかを正確に特定しやすくなります。instock tinyint(1) not null default ' 'これをテストしていたとき、空の文字列を整数列に設定しようとしているために機能しないなど、間違ったデフォルト値やそのようなものに関するエラーが発生しました。うまくいきません。日時のデフォルト値については、適切な空の日付値が何であるかを確認するために、Google で検索する必要がありました。バッククォートを削除して通常の引用符に置き換えるなど、試行錯誤もありました。

編集:これはエラーなしで機能します... SQLフィドルでテストしており、MySQL 5.5.31に設定されています。発生している正確なエラーを教えてください (エラーの内容を教えていただけない限り、私たちはあなたを助けることができません。私には推測できません)、使用している DB とそのバージョンを教えてください。


これは、上記の編集に基づいています。0000-00-00'asと入力しまし0000-00=00'たが、バッククォートの代わりに通常の一重引用符を使用する必要があります (と思いますか?)。

Create table computer_inventory ( 
     assetnumber int(10) not null default 0,
     manufacturer varchar(15) not null default ' ', 
     originalcost decimal(12,2) not null default 0, 
     currentvalue decimal(12,2) not null default 0, 
     boughtfrom varchar(20) not null default ' ', 
     instock tinyint(1) not null default 0, 
     currentuser varchar(20) not null default ' ',
     userphonenum varchar(13) not null default ' ',
     boughtdate datetime not null default '0000-00-00'
 );
于 2013-11-10T01:46:24.807 に答える