Hello.


Use such alter statement:

  alter table mytable change a a  int default '1';





Every thing works fine on the MySQL 5.0.3 (from the latest bk source):



mysql> CREATE TABLE `mytable` (

->

->   `a` int(11) NOT NULL,

->

->   `b` int(11) NOT NULL,

->

->   `c` int(11) default NULL

->

-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1

-> ;

Query OK, 0 rows affected (0.19 sec)

mysql> insert into mytable (b, c) values (2, 3);

Query OK, 1 row affected (0.01 sec)

mysql> select * from mytable;

+---+---+------+

| a | b | c    |

+---+---+------+

| 0 | 2 |    3 |

+---+---+------+

1 row in set (0.01 sec)

mysql> alter table mytable change a a  int default '1';Query OK, 1 row affected 
(0.23 sec)

Records: 1  Duplicates: 0  Warnings: 0



mysql> show create table mytable\G;

*************************** 1. row ***************************

       Table: mytable

       Create Table: CREATE TABLE `mytable` (

`a` int(11) default '1',

`b` int(11) NOT NULL,

`c` int(11) default NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)



mysql> insert into mytable (b, c) values (2, 3);

Query OK, 1 row affected (0.02 sec)



mysql> select * from mytable;

+------+---+------+

| a    | b | c    |

+------+---+------+

|    0 | 2 |    3 |

|    1 | 2 |    3 |

+------+---+------+

2 rows in set (0.00 sec)









[snip]







I am using MySQL 5.0.2 on a Redhat 9 box.  I am having problems altering

some columns default value and having it show up in the 'show create

table x' and backup files.  Here is my repeatable example:

 I issue this create statement:

 create table mytable (

 a int not null,

 b int not null,

 c int

 );

  Then I issue this alter table statement:

  alter table mytable

  alter a set default '1';

   Then I issue:

Show create table mytable;

The result is:

CREATE TABLE `mytable` (

`a` int(11) NOT NULL,

`b` int(11) NOT NULL,

`c` int(11) default NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

However, the behavior works properly.

For instance:

insert into mytable (b, c) values (2, 3);

select * from mytable;

produces:

1, 2, 3

I realize of course that I can simply put the default value clause in my

create statement, but I don't want to do that because the entire

database has already been established and is up and running in a

production environment.

Am I doing something wrong or is this a bug?  Whatever the case, what is

the fix?

Thank you,

Jason McAffee

The Technology Group

[snip]







-- 
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Gleb Paharenko
 / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
/_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.NET
       <___/   www.mysql.com




-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to