-
Notifications
You must be signed in to change notification settings - Fork 79
Open
Description
mybatis-migrations-3.3.11
を使用して、localhostのmysql Ver 8.3.0 for Win64 on x86_64
に対してsqlファイルを流した際
文字列内に半角セミコロン(;
)があり、かつその後に改行されてsql文が続く場合に下記の実行エラーが発生します。
エラー内容:
ERROR: Error executing command. Cause: java.lang.RuntimeException: Error executing: INSERT INTO `_text` (`id`, `japanese`, `english`, `datetime`)
VALUES
('A', 'a;A', 'a
. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a' at line 3
_text
テーブル定義は
CREATE TABLE IF NOT EXISTS _text (
`id` VARCHAR(255) NOT NULL,
`japanese` TEXT NOT NULL,
`english` TEXT NOT NULL,
`datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(),
PRIMARY KEY (`id`) USING BTREE
);
となっており、このテーブルに対して以下のbulk insert文を投げる事でエラーが発生します。
SET @now = '2025-06-20 12:00:00';
INSERT INTO `_text` (`id`, `japanese`, `english`, `datetime`)
VALUES
('A', 'a;A', 'a;A', @now),
('B', 'b;B', 'b;B', @now);
この時"japanese"と"english"カラムに入れる文字列をセミコロンのみ「('A', ';', ';', @now),
」にしてもエラーが発生します。
ですが上記sqlを下記のように改行を削除する修正でエラーは発生せず正しく動作します。
SET @now = '2025-06-20 12:00:00';
INSERT INTO `_text` (`id`, `japanese`, `english`, `datetime`)
VALUES
('A', 'a;A', 'a;A', @now), ('B', 'b;B', 'b;B', @now);
このように回避方法はありますが、可読性の側面からもbulk insert時に改行をして管理を行いため
修正の程よろしくお願いいたします。
harawata
Metadata
Metadata
Assignees
Labels
No labels