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,当前值十进制(1' 在第 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'
);

下次遇到此类问题时,您可以执行以下操作:先尝试仅包含一或两列的表格,如果这些行没有错误,请删除表格并使用更多列重新创建表格. 如果您遇到错误,这将更容易准确地找出不正确的部分。当我对此进行测试时,我收到了有关错误默认值和类似内容的错误......例如instock tinyint(1) not null default ' ',这不起作用,因为您试图将空字符串设置为整数列。它不起作用。对于日期时间默认值,我不得不在谷歌上查找它以查看适当的空日期值是什么。其中一些也是反复试验,例如删除反引号并用普通引号替换它们。

编辑:这对我来说没有错误...我正在用sql fiddle测试它,它是为 MySQL 5.5.31 设置的。告诉我您遇到的确切错误(除非您告诉我们错误的含义,否则我们无法帮助您,我无法猜测)以及您使用的数据库及其版本。


这是基于您上面的编辑。您键入0000-00-00'as0000-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 回答