#1550 new
Sam Beran

Oracle Evolutions - Invalid Character

Reported by Sam Beran | June 19th, 2012 @ 02:28 PM | in 1.4.x

The evolutions functionality appears to intelligently split migrations on semicolons in order to execute them individually using JDBC.

Unfortunately, the SQLSplitter includes the trailing semicolons in it's output which causes the following error in oracle:

19 Jun 2012 09:26:12,020 ERROR [] play Can't apply evolution
java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1882)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1847)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:301)
at play.db.Evolutions.execute(Evolutions.java:522)
at play.db.Evolutions.applyScript(Evolutions.java:265)
at play.db.Evolutions.main(Evolutions.java:127)

Pull request is forthcoming.

Comments and changes to this ticket

  • Sam Beran
  • Nicolas Leroux

    Nicolas Leroux December 29th, 2012 @ 11:29 PM

    • Assigned user set to “Nicolas Leroux”
    • Milestone set to 1.3
  • Nicolas Leroux

    Nicolas Leroux December 29th, 2012 @ 11:35 PM

    I don't understand the issue. Oracle does not support semicolons?

  • Bruno Siqueira

    Bruno Siqueira June 27th, 2013 @ 04:57 PM

    Still happening in the milestone 1.3.x code

    12:51:34,558 ERROR ~ SQL error while checking play evolutions
    java.sql.SQLSyntaxErrorException: ORA-00911: caractere inválido
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
        at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:999)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)
        at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1890)
        at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1855)
        at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:304)
        at play.db.Evolutions.execute(Evolutions.java:641)
        at play.db.Evolutions.checkAndUpdateEvolutionsForMultiModuleSupport(Evolutions.java:594)
        at play.db.Evolutions.listDatabaseEvolutions(Evolutions.java:536)
        at play.db.Evolutions.getEvolutionScript(Evolutions.java:445)
        at play.db.Evolutions.checkEvolutionsState(Evolutions.java:409)
        at play.db.Evolutions.beforeInvocation(Evolutions.java:275)
        at play.plugins.PluginCollection.beforeInvocation(PluginCollection.java:473)
        at play.Invoker$Invocation.before(Invoker.java:217)
        at play.jobs.Job.call(Job.java:139)
        at Invocation.Job(Play!)
    12:51:34,577 ERROR ~ 
    Error during job execution (Bootstrap)
    Oops: SQLSyntaxErrorException
    An unexpected error occured caused by exception SQLSyntaxErrorException: ORA-00904: "MODULE_KEY": identificador inválido 
    play.exceptions.UnexpectedException: Unexpected Error
        at play.db.Evolutions.checkEvolutionsState(Evolutions.java:431)
        at play.db.Evolutions.beforeInvocation(Evolutions.java:275)
        at play.plugins.PluginCollection.beforeInvocation(PluginCollection.java:473)
        at play.Invoker$Invocation.before(Invoker.java:217)
        at play.jobs.Job.call(Job.java:139)
        at Invocation.Job(Play!)
  • Alex

    Alex June 28th, 2013 @ 02:43 AM

    About Oracle, there is a regression in the current branch 1.3.x, the previous fix of issue #1105 disappear, I already prepare a patch to restore the previous behavior (pull request #590).
    I will have a look to test if the problem still present with this fix.

    How do you get this exception, when applying evolutions on an empty database, or a previous database?

  • Alex

    Alex June 28th, 2013 @ 02:52 AM

    Problem could also comes from play to try to add the "module_key" column on a table which already have it, we maybe need to manage the upper/lower case support of the database, before checking if the column exist

  • Alex

    Alex January 14th, 2015 @ 06:40 AM

    • Milestone changed from 1.3 to 1.4.x
  • VelmaJDennis

    VelmaJDennis October 30th, 2018 @ 08:53 PM

    Das ist ein guter Plan. Ich bezahle meinen Unterricht alleine. Ich spiele Computerspiele http://esportsweb.org/ thunderpick.html und setze Wetten auf Fneiks Lieblings-Cyber-Team. Mein Team bringt mir Geld und ich leiste Nachhilfe. Es ist einfach

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2>Play framework</h2>

Play makes it easier to build Web applications with Java. It is a clean alternative to bloated Enterprise Java stacks. It focuses on developer productivity and targets RESTful architectures. Learn more on the <a href="http://www.playframework.org">http://www.playframework.org</a> website.<br><br>

<h2>Source code is hosted on github</h2>Check out our repository at <a href="http://github.com/playframework/play">http://github.com/playframework/play</a><br><br>

<h2>Contributing, creating a patch</h2> Please read the <a href="http://play.lighthouseapp.com/projects/57987/contributor-guide">contributor guide</a><br><br>

<h2>Reporting Security Vulnerabilities</h2> Since all bug reports are public, please report any security vulnerability directly to <em>guillaume dot bort at gmail dot com</em>.<br><br>

<h2>Creating a bug report</h2> Bug reports are incredibly helpful, so take time to report bugs and request features in our ticket tracker. We’re always grateful for patches to Play’s code. Indeed, bug reports with attached patches will get fixed far quickly than those without any.<br><br>

Please include as much relevant information as possible including the exact framework version you're using and a code snippet that reproduces the problem.<br><br>

Don't have too much expectations. Unless the bug is really a serious "everything is broken" thing, you're creating a ticket to start a discussion. Having a patch (or a branch on Github we can pull from) is better, but then again we'll only pull high quality branches that make sense to be in the core of Play.