У меня странная проблема с использованием клиента Mysql2 в Ruby. При попытке выполнить следующее:
client.query("CREATE DATABASE ...; INSERT INTO ..."); #SQL truncated for brevity
client.query("SELECT 1 FROM ...") #SQL truncated for brevity
Ruby выдает ошибку, которую не выбрала таблица, которую я выбираю. Однако, если я попробую следующее:
client.query("CREATE DATABASE ...; INSERT INTO ..."); #SQL truncated for brevity
sleep 1
client.query("SELECT 1 FROM ...") #SQL truncated for brevity
Запрос работает без проблем. Кажется, мне нужно предоставить серверу MySQL некоторое время для загрузки данных, прежде чем я смогу запросить его. Может ли кто-нибудь объяснить, почему это происходит и как программно преодолеть это, не используя сон?
Обновление
Я инициализирую клиент так:
Mysql2::Client.new({
:adapter => "mysql2",
:host => ip_address,
:username => db_username,
:password => db_password,
:flags => Mysql2::Client::MULTI_STATEMENTS
})
Я проверил атрибут 'query_options', а async - false. Я попытался явно установить флаг async = > false безрезультатно.
Такая же проблема возникает, если я использую
Model.connection.execute(SQL HERE)
Обратите внимание, что все это выполняется из Rails unit test.
Спасибо