So basically having a script that mirrors this basic format:
--* DEFINITION
--* SETUP "" --> "1.66"
--* /DEFINITION
--* SETUP "" --> "1.66"
--* SECTION "Creating Solidbase Control Tables"
USE ${hibernate.mysql.schema};
CREATE TABLE DBVERSION
(
SPEC VARCHAR(5),
VERSION VARCHAR(20),
TARGET VARCHAR(20),
STATEMENTS DECIMAL(4) NOT NULL
);
CREATE TABLE DBVERSIONLOG
(
TYPE VARCHAR(1) NOT NULL,
SOURCE VARCHAR(20),
TARGET VARCHAR(20) NOT NULL,
STATEMENT DECIMAL(4) NOT NULL,
STAMP TIMESTAMP NOT NULL,
COMMAND VARCHAR(4000),
RESULT VARCHAR(4000)
);
CREATE INDEX DBVERSIONLOG_INDEX1 ON DBVERSIONLOG ( TYPE, TARGET );
--* SECTION "Creating Structures and Seeding Data"
< all my existing data and structure goes here >
INSERT INTO DBVERSION ( SPEC, VERSION, STATEMENTS )
VALUES ( '1.1', '1.66', 1 );
--* /SETUP
This would accomplish it for the most part, right?
I was also thinking what if I just created the control tables and
inserted the row into DBVERSION without dropping or modifying any of
the existing data *manually* in production. In other words (1.66 is
the current production version in this case):
1. Backup prod :D
2. Connect to prod manually
3. Create control tables and index
4. INSERT INTO DBVERSION(SPEC,VERSION,STATEMENTS) VALUES ('1.1','1.66',
1);
Then the change script would look like this:
--* DEFINITION
--* SETUP "" --> "1.66"
--* UPGRADE OPEN "1.66" --> "1.67"
--* /DEFINITION
--* SETUP "" --> "1.66"
--* SECTION "Creating Solidbase Control Tables"
USE ${hibernate.mysql.schema};
CREATE TABLE DBVERSION
(
SPEC VARCHAR(5),
VERSION VARCHAR(20),
TARGET VARCHAR(20),
STATEMENTS DECIMAL(4) NOT NULL
);
CREATE TABLE DBVERSIONLOG
(
TYPE VARCHAR(1) NOT NULL,
SOURCE VARCHAR(20),
TARGET VARCHAR(20) NOT NULL,
STATEMENT DECIMAL(4) NOT NULL,
STAMP TIMESTAMP NOT NULL,
COMMAND VARCHAR(4000),
RESULT VARCHAR(4000)
);
CREATE INDEX DBVERSIONLOG_INDEX1 ON DBVERSIONLOG ( TYPE, TARGET );
INSERT INTO DBVERSION ( SPEC, VERSION, STATEMENTS )
VALUES ( '1.1', '1.66', 1 );
--* /SETUP
--* UPGRADE "1.66" --> "1.67"
<do some stuff that isn't in production yet>
--* /UPGRADE
Does this also solve the problem?