Love澤's Tech Room

技術系ネタをまとめていくブログ。更新頻度は高くありません。

MySQLからMariaDBへ移行した時に起きた問題点(1)

先日、MySQLからMariaDBへ乗り換えた。MariaDBのインストール法などは別の記事にメモするとして、今回はMySQLからMariaDBへ移行した時に起きた問題点をメモ。多分今後も増えるかもしれないので(1)ということで。

javaMySQLからデータを得る際に、以下のようにしていて、問題なく動作していた。

...(中略)
sql = "select table1.id ,table1.ans=table2.reply from table1 join table2 using id order by q asc";
rs = stmt.executeQuery(sql)
while (rs.next()) {
    System.out.println("ans=reply " + rs.getString("ans=reply"));
}
...(中略)

がしかし、Javaからクエリを発行して実行しようとするとなぜか以下のようなエラーが。

java.sql.SQLException: No such column :ans=reply
        at org.mariadb.jdbc.internal.common.queryresults.ColumnNameMap.getLabelIndex(ColumnNameMap.java:78)
        at org.mariadb.jdbc.internal.common.queryresults.ColumnNameMap.getIndex(ColumnNameMap.java:26)
        at org.mariadb.jdbc.MySQLResultSet.findColumn(MySQLResultSet.java:479)
        at org.mariadb.jdbc.MySQLResultSet.getString(MySQLResultSet.java:3590)
        at sort.main(sort.java:292)

上のコードで言うと

rs = stmt.executeQuery(sql)

の部分で怒られていた。

MaraDB上でクエリを実行する分には正常に動作するので、ドライバ関係の問題なのだろうか?とりあえず、javaでクエリを発行する際に以下のようにしてやると問題なく動作した。

sql = "select table1.id ,table1.ans=table2.reply as \"ans_reply\" from table1 join table2 using id order by q asc";
rs = stmt.executeQuery(sql)
while (rs.next()) {
    System.out.println("ans=reply " + rs.getString("ans_reply"));
}

これ、同様な箇所を全て直さなくちゃいけないのかなぁ。とりあえず、今後は注意しておこう。