# pt-online-schema multiple changes

**URL:** <https://forums.percona.com/t/pt-online-schema-multiple-changes/2606>\
**Category:** Percona Toolkit\
**Created:** [January 28, 2013, 1:31am UTC](https://forums.percona.com/t/pt-online-schema-multiple-changes/2606 "2013-01-28T01:31:59Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![khannvin](https://avatars.discourse-cdn.com/v4/letter/k/8e7dd6/32.png) [@khannvin](https://forums.percona.com/u/khannvin)\
**Post date:** [January 28, 2013, 1:31am UTC](https://forums.percona.com/t/pt-online-schema-multiple-changes/2606/1 "2013-01-28T01:31:59Z")

</div>

Hi,

I want to perform below tasks for a INNODB table.

can pt-online-schema help me to run below commands in one go?

1. ALTER table foo ENGINE=MyISAM;

2. ALTER TABLE foo MODIFY date datetime NOT NULL;

3. ALTER TABLE foo DROP PRIMARY KEY, ADD PRIMARY KEY (`id`,`date`);

4. ALTER TABLE foo PARTITION BY RANGE (MOD(TO\_DAYS(date),2))(PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM,  
PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM);

Thanks!

---

<div class="post-metadata">

**Author:** ![niljoshi](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/niljoshi/32/16889_2.png) [@niljoshi](https://forums.percona.com/u/niljoshi)\
**Post date:** [January 30, 2013, 4:08am UTC](https://forums.percona.com/t/pt-online-schema-multiple-changes/2606/2 "2013-01-30T04:08:25Z")

</div>

Hi,

Yes, you can use below alter command with pt-online-schema-change utility. [http://www.percona.com/doc/percona-toolkit/2.1/pt-online-sch](http://www.percona.com/doc/percona-toolkit/2.1/pt-online-sch) ema-change.html

ALTER TABLE foo ENGINE=MyISAM, DROP PRIMARY KEY, ADD PRIMARY KEY (`id`,`date`), MODIFY date datetime NOT NULL PARTITION BY RANGE (MOD(TO\_DAYS(date),2))(PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM);

---

<div class="post-metadata">

**Author:** ![khannvin](https://avatars.discourse-cdn.com/v4/letter/k/8e7dd6/32.png) [@khannvin](https://forums.percona.com/u/khannvin)\
**Post date:** [January 30, 2013, 4:55am UTC](https://forums.percona.com/t/pt-online-schema-multiple-changes/2606/3 "2013-01-30T04:55:18Z")

</div>

Thanks Nil for your reply. I already implemented the command.

command is given below:

pt-online-schema-change --execute --print --alter “ENGINE=MyISAM, DROP PRIMARY KEY, ADD PRIMARY KEY (id,date) PARTITION BY RANGE ( MOD(TO\_DAYS(date),2))(PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM)” D=test,t=foo

Note: script was throwing error with (`id`,`date`)

---

<div class="post-metadata">

**Author:** ![r4z0r](https://avatars.discourse-cdn.com/v4/letter/r/3da27b/32.png) [@r4z0r](https://forums.percona.com/u/r4z0r)\
**Post date:** [June 11, 2013, 5:27pm UTC](https://forums.percona.com/t/pt-online-schema-multiple-changes/2606/4 "2013-06-11T17:27:42Z")

</div>

See [URL=“[shell - What does ` (backquote/backtick) mean in commands? - Unix & Linux Stack Exchange](http://unix.stackexchange.com/questions/27428/what-does-backquote-backtick-mean-in-bash)”][http://unix.stackexchange.com/questi...k-mean-in-bash[/URL]](http://unix.stackexchange.com/questi...k-mean-in-bash%5B/URL%5D)

The `id` part gets interpreted as ‘id’ command ([URL][http://linux.about.com/library/cmd/blcmdl1\_id.htm[/URL]](http://linux.about.com/library/cmd/blcmdl1_id.htm%5B/URL%5D)). To work around this, remove the backticks from your ALTER clause
