Created
August 28, 2019 19:33
-
-
Save tomykaira/8aefc0e7a34f7f31b1336d2c36ad7baf to your computer and use it in GitHub Desktop.
Silly example case to reproduce "Unknown column" error on mysql 5.6, but not on mysql 8.0+
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Unknown column 'x6.z' in 'where clause' | |
java.sql.SQLSyntaxErrorException: Unknown column 'x6.z' in 'where clause' | |
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) | |
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) | |
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) | |
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970) | |
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:387) | |
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) | |
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) | |
at slick.jdbc.StatementInvoker.results(StatementInvoker.scala:38) | |
at slick.jdbc.StatementInvoker.iteratorTo(StatementInvoker.scala:21) | |
at slick.jdbc.Invoker.foreach(Invoker.scala:47) | |
at slick.jdbc.Invoker.foreach$(Invoker.scala:46) | |
at slick.jdbc.StatementInvoker.foreach(StatementInvoker.scala:15) | |
at slick.jdbc.StreamingInvokerAction.run(StreamingInvokerAction.scala:22) | |
at slick.jdbc.StreamingInvokerAction.run$(StreamingInvokerAction.scala:20) | |
at slick.jdbc.JdbcActionComponent$QueryActionExtensionMethodsImpl$$anon$2.run(JdbcActionComponent.scala:216) | |
at slick.jdbc.JdbcActionComponent$QueryActionExtensionMethodsImpl$$anon$2.run(JdbcActionComponent.scala:216) | |
at slick.basic.BasicBackend$DatabaseDef$$anon$3.liftedTree1$1(BasicBackend.scala:275) | |
at slick.basic.BasicBackend$DatabaseDef$$anon$3.run(BasicBackend.scala:275) | |
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) | |
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) | |
at java.lang.Thread.run(Thread.java:748) | |
Process finished with exit code 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package sillyexample | |
import org.scalatest.FunSuite | |
import slick.jdbc.MySQLProfile.api._ | |
import scala.concurrent.{Await, ExecutionContext, ExecutionContextExecutor} | |
import scala.concurrent.duration.Duration | |
class ReproTest extends FunSuite { | |
class ATable(tag: Tag) extends Table[(String, String)](tag, "a") { | |
def x = column[String]("x", O.Length(100)) | |
def y = column[String]("y", O.Length(100)) | |
override def * = (x, y) | |
} | |
class BTable(tag: Tag) extends Table[(String, String)](tag, "b") { | |
def x = column[String]("x", O.Length(100)) | |
def z = column[String]("z", O.Length(100)) | |
override def * = (x, z) | |
} | |
class CTable(tag: Tag) extends Table[(String, String)](tag, "c") { | |
def z = column[String]("z", O.Length(100)) | |
def w = column[String]("w", O.Length(100)) | |
override def * = (z, w) | |
} | |
class DTable(tag: Tag) extends Table[(String)](tag, "d") { | |
def w = column[String]("w", O.Length(100)) | |
override def * = (w) | |
} | |
implicit val ec: ExecutionContextExecutor = ExecutionContext.global | |
val db: Database = Database.forConfig("mysql_test") | |
val a = TableQuery(tag => new ATable(tag)) | |
val b = TableQuery(tag => new BTable(tag)) | |
val c = TableQuery(tag => new CTable(tag)) | |
val d = TableQuery(tag => new DTable(tag)) | |
test("query") { | |
Await.result( | |
db.run { | |
for { | |
_ <- sqlu""" | |
drop database if exists test; | |
create database test default character set utf8mb4 collate utf8mb4_bin; | |
use test; | |
""" | |
_ <- a.schema.dropIfExists | |
_ <- b.schema.dropIfExists | |
_ <- c.schema.dropIfExists | |
_ <- d.schema.dropIfExists | |
_ <- a.schema.create | |
_ <- b.schema.create | |
_ <- c.schema.create | |
_ <- d.schema.create | |
x <- a | |
.join(b.filter { bt => | |
c.filter(_.z === bt.z) | |
.join(d) | |
.on(_.w === _.w) | |
.exists | |
}) | |
.on(_.x === _.x) | |
.result | |
} yield println(x) | |
}, | |
Duration.Inf, | |
) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment