2014-01-08 4 views
1

Я хочу иметь возможность легко отлаживать мои сценарии в Mysql, например, в MSSQL (запускать кусок скрипта, затем проверять таблицы и т. Д.), Но временные таблицы не сохраняются на сервер. Например:Таблицы временных таблиц Mysql отбрасываются между исполнением

CREATE temporary table a(i int); 
INSERT INTO a VALUE (1); 
SELECT * FROM a; 

Если я запускаю весь сценарий возвращает мне правильный результат, но если я бегу это заявление заявление на вкладыше я получаю следующую ошибку:

SQL.sql: Error (2,13): Table 'test.a' doesn't exist

Я полагаю, это проблема конфигурации сервера.

+3

Что вы используете для выполнения запросов? Если вы ставите их один за другим в инструмент, возможно, он закрывает соединение между ними. – ceejayoz

+0

Я использую dbForge Studio Express – Yohn

+0

Один для [@Devart] (http://stackoverflow.com/users/135566/devart), я думаю. – eggyal

ответ

1

Временные таблицы отбрасываются, когда транзакция завершена.

из dev.mysql:

Temporary Tables: You can use the TEMPORARY keyword when creating a table. A TEMPORARY table is visible only to the current connection, and is dropped automatically when the connection is closed. This means that two different connections can use the same temporary table name without conflicting with each other or with an existing non-TEMPORARY table of the same name. (The existing table is hidden until the temporary table is dropped.) To create temporary tables, you must have the CREATE TEMPORARY TABLES privilege.

Note CREATE TABLE does not automatically commit the current active transaction if you use the TEMPORARY keyword.


Так что, если вы бежите все эти SQL в отводящий сделок вы временная таблица обыкновение существовать при выполнении оператора вставки.

Если эти исполнения выполняются в разных транзакциях, зависит от того, какой интерфейс вы используете. Thats wy, если вы «запускаете весь скрипт, он возвращает мне правильный результат», потому что он все в одной транзакции.


Вы можете попробовать, чтобы заставить его работать на одной и той же сделки с:

START TRANSACTION; 
<SQL QUERYS> 
COMMIT; 

в любом случае я рекомендую вам MySQL Workbench как интерфейс.

С наилучшими пожеланиями, я надеюсь, что это поможет вам.

Смежные вопросы