Issue 500: Upgrade from 2.1.1.1 to 2.1.2 fails to schema upgrade
Status:  Released
Owner:
Closed:  Mar 2012
Reported by jsvuo...@gmail.com, Mar 16, 2010
Affected Version: 2.1.1.1 -> 2.1.2

What steps will reproduce the problem?
1. Have a working gerrit 2.1.1.1. installation
2. Upgrade to 2.1.2 using "java -jar gerrit-2.1.2.war init -d review_site"

What is the expected output?
Upgrade successful.

What do you see instead?
gerrit2@linux:~$ java -jar gerrit-2.1.2.war init -d review_site

*** Gerrit Code Review 2.1.2
*** 


*** Git Repositories
*** 

Location of Git repositories   [git]: 
Import existing repositories   [Y/n]? 

*** SQL Database
*** 

Database server type           [MYSQL/?]: 
Server hostname                [localhost]: 
Server port                    [(MYSQL default)]: 
Database name                  [reviewdb]: 
Database username              [gerrit2]: 
Change gerrit2's password      [y/N]? 

*** User Authentication
*** 

Authentication method          [LDAP/?]: 
LDAP server                    [ldap://ldap.example.com]: 
LDAP username                  [example.com]: 
Change example.com's password [y/N]? 
Account BaseDN                 [ou=users,ou=accounts,dc=example,dc=com]: 
Group BaseDN                   [ou=groups,dc=example,dc=com]: 

*** Email Delivery
*** 

SMTP server hostname           [localhost]: 
SMTP server port               [(default)]: 
SMTP encryption                [NONE/?]: 
SMTP username                  : 

*** Container Process
*** 

Run as                         [gerrit2]: 
Java runtime                   [/usr/lib/jvm/java-6-sun-1.6.0.16/jre]: 
Upgrade /home/gerrit2/review_site/bin/gerrit.war [Y/n]? 
Copying gerrit.war to /home/gerrit2/review_site/bin/gerrit.war

*** SSH Daemon
*** 

Listen on address              [*]: 
Listen on port                 [29418]: 

*** HTTP Daemon
*** 

Behind reverse proxy           [y/N]? 
Use SSL (https://             [y/N]? 
Listen on address              [*]: 
Listen on port                 [8080]: 

Upgrading database schema from version 20 to 21 ...
Exception in thread "main" com.google.gwtorm.client.OrmException: Cannot 
upgrade schema
	at 
com.google.gerrit.server.schema.SchemaUpdater.update(SchemaUpdater.java:58)
	at com.google.gerrit.pgm.Init$SiteRun.upgradeSchema(Init.java:190)
	at com.google.gerrit.pgm.Init.run(Init.java:85)
	at 
com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:76)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3
9)
	at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
l.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at 
com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java
:155)
	at 
com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:89)
	at 
com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:47)
	at Main.main(Main.java:25)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
FUNCTION reviewdb.nextval_project_id does not exist
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method)
	at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcce
ssorImpl.java:39)
	at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstru
ctorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.Util.getInstance(Util.java:381)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2642)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2571)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:782)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:625)
	at 
com.google.gerrit.server.schema.Schema_21.migrateData(Schema_21.java:58)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:95)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaVersion.upgradeFrom(SchemaVersion.jav
a:86)
	at 
com.google.gerrit.server.schema.SchemaVersion.check(SchemaVersion.java:77)
	at 
com.google.gerrit.server.schema.SchemaUpdater.update(SchemaUpdater.java:56)
	... 11 more


Mar 16, 2010
#1 sop@google.com
You somehow missed this step in 2.0.x series:

  java -jar gerrit.war --cat sql/mysql_nextval.sql | mysql reviewdb -u gerrit2 -p

http://gerrit.googlecode.com/svn/documentation/2.0/install.html#add_indexes

You should grab the 2.0.24.2 WAR again and apply that SQL,
then restart the upgrade.

https://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.0.24.2.war&can=1
Status: WontFix
Mar 16, 2010
#2 jsvuo...@gmail.com
Thanks, it worked.

Btw,
I had a clean installation of 2.1.1.1. I have never ran 2.0.x series.

I find the need to install older versions of gerrit strange in order to get newer ones 
working.
Mar 16, 2010
#3 sop@google.com
That mysql_nextval script was also in 2.1.1.x but we
somehow managed to remove it from the installation
instructions for the 2.1 series.  Whoops.

The script is actually unnecessary, the server doesn't
use any of the functions it defines.  But during the
upgrade we assume the administrator had installed them
anyway, and try to clean them out of the database.  I
guess the problem here is in 2.1.2 we require the cleanup
to succeed.  It could instead be a warning.
Mar 16, 2010
#4 nsallemb...@google.com
(No comment was entered for this change.)
Status: Accepted
Owner: nsallemb...@google.com
Mar 17, 2010
#5 sop@google.com
Fixed by change Ie9aa0d732f884a6d749d864ee3a43d257af272b7
Labels: FixedIn-2.1.2.1
Mar 17, 2010
#6 sop@google.com
(No comment was entered for this change.)
Status: Fixed
Mar 27, 2012
#7 sop@google.com
(No comment was entered for this change.)
Status: Released