I have code to delete the Plugin device from the system, when I try to execute
this code I get an exception before my Command gets invoked in system code that
tries to create an event. I debugged this to the event table underlying SQL
definition. I wanted to know what the best practice was for CloudStack:
* Update the Event Table definition to accommodate a longer Type Field
* Limit my choice of naming to fit the existing 32 byte Event Field
Ideally I wanted to change the event definition, but the change will impact
database upgrade as we go from one release to another.
-Soheil
mysql> describe event;
+-------------+---------------------+------+-----+-----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+-----------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
.....
| type | varchar(32) | NO | MUL | NULL | |
.....
+-------------+---------------------+------+-----+-----------+----------------+
-------
@Entity
@Table(name="event")
public class EventVO implements Event {
....
@Column(name="type")
private String type;
------
ERROR [cloud.api.ApiServer] (183551903@qtp-729770861-5:) unhandled exception
executing api command: deleteInfobloxDevice
com.cloud.utils.exception.CloudRuntimeException: DB Exception on:
com.mysql.jdbc.JDBC4PreparedStatement@59c7f05d: INSERT INTO event (event.type,
event.state, event.description, event.created, event.user_id, event.account_id,
event.domain_id, event.level, event.start_id, event.parameters, event.uuid,
event.archived) VALUES (_binary'PHYSICAL.INFOBLOXCONTROLLER.DELETE',
'Scheduled', _binary'Deleting Infoblox Controller', '2013-07-16 04:11:58', 2,
2, 1, _binary'INFO', 0, null, _binary'eefc03f0-f60b-4450-a43a-319e66c15e94', 0)
at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1342)
......
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long
for column 'type' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4072)