What is SQLyog | SQLyog MySQL GUI

What is SQLyog

SQLyog provides you with powerful means to manage your MySQL databases.

  • Runs on all Windows version from Win XP to Win7. Runs on Linux with WINE.
  • MySQL 5.x compatible
  • Create/Drop/Alter Tables, Stored Procedures, Functions, Views, Triggers and Events.
  • HTTP and SSH Tunneling - smartly manage your MySQL server even if the MySQL port is blocked or remote access to MySQL is disallowed!
  • Protect your data with SSL encryption.
  • Smart AutoComplete.
  • Formats SQL statements.
  • Proactive Query Profiler.
  • Favorite Manager to neatly organize your favorite SQL statements.
  • Very fast retrieval of data.
  • Advanced GUI Query Builder. Supports JOINs, aggregate as well as 'common' functions, sorting (ORDER BY) and filtering (WHERE and HAVING) and ALIAS.
  • SQLyog Import External Data wizard - use the GUI or specify a query.
  • Schema and Data synchronization tools.
  • Powerful compressed Scheduled Backup with email notification.
  • Schedule various jobs.
  • SQL Scheduler and Reporting Tool - execute unattended queries for database maintainence of data verification with flexible email option.
  • Update result returned from query - also supports queries with JOINs. No dialogues - just edit!
  • Manage foreign key relationships.
  • Fully InnoDB compliant.
  • Supports MySQL pluggable storage engines architecture.
  • Multi-threaded query execution with option to allow multiple query execution simultaneously.
  • View your results in GRID/TEXT mode.
  • Filter data and resultsets directly form the context menu of a displayed value.
  • Execute (very large) SQL-scripts as batch files.
  • Execute multiple queries returning more than 1000s of rows per resultset. Its very efficient in memory.
  • Very compact binary.
  • Written entirely in C/C++/Win32 APIs using native MySQL C APIs. No wrapper classes used.
  • Connection manager.
  • Tabbed interface to create/alter tables.
  • View and edit advanced table-properties, such as Comment, Key_Length etc.
  • Do table-diagnostics (check, optimize, repair, analyze)
  • Duplicate tables to new table-names.
  • Excel like grid interface to edit data with support for Enum/Set.
  • Create/Drop databases.
  • Manage indexes.
  • Comprehensive user/security manager. Control every available privilege on what level you like (server/database/table/column).
  • Reorder columns of table.
  • Copy database between two MySQL hosts.
  • Drop all tables of a database with a single click.
  • Edit BLOBs in TEXT or GRAPICHS mode. All common (non-proprioritary) graphics format (including 'high-resolution' TIFFs and PNGs) supported.
  • Export table-structure and data into SQL-dumps.
  • Direct export to Microsoft Excel.
  • Export/import data in/from CSV files.
  • Export database schema in HTML.
  • Log all queries for a session.
  • Syntax-highlighting.
  • Save resultset in CSV, HTML and XML.
  • Copy your result as CSV to clipboard.
  • Is very keyboard friendly. You can work with 99% features of SQLyog with keyboard.
  • View and kill other user-processes.
  • Flush Host/Logs/Privileges/Tables.
  • Quick access to processlist, status, variables etc.
  • and a lot more...


Version History | SQLyog GUI for MySQL

﻿ Version History | SQLyog GUI for MySQL

Version History

SQLyog 11.01 (February 2012)

  • Bug Fixes

    -- Fixed 2 issues introduced in 'Import External Data' when rewriting program code for 64-bit compilation as of version 11.0: 1) A job file with a (NDB-cluster) TABLESPACE specification and a WHERE clause failed to load in the wizard 2) non-ASCII defaults defined on non-unicode/ANSI string columns on source would be mapped against a UTF8 byte pattern and would garble for same reason.
    -- Fixed a rare crash occurring when dropping indexes from the Object Browser repeatedly.

SQLyog 11.0 (February 2013)

  • Features

    -- Now SQLyog (including SJA for both Windows and Linux) is available as both 32 and 64 bit binaries. Obviously the 64 bit version will require a 64 bit Windows. 32 bit version will install to 'Program Files (x86)' and 64 bit to 'Program Files' on 64 bit systems.
    -- Autocomplete is now context-aware. The keyword before any type of autocomplete popup/dialog will be used for filtering and displaying only object types relevant in the context.

  • Bug Fixes

    -- Copy to clipboard from GRID could in rare cases truncate the last row away. This bug was introduced in version 9.51.
    -- Fixed a bug in import external data where clicking on "select all" would select tables even when no data was returned from the source. This could cause a crash while executing the job. This was introduced in 10.1.
    -- If there was no default database selected in the main dialog of SQLyog, changing the database from the dropdown in 'backup as SQL dump' dialog would cause SQLyog to hang. Introduced in version 10.5.
    -- When using drag and drop to create a Foreign Key constraint in Schema Designer, the ALTER TABLE pop-up dialog would have the view scrolled to the right, resulting in the leftmost two columns being hidden. This issue was introduced in 9.6.
    -- The position from where the 'Themes' folder was read did not honor a specified -dir startup switch. It will now read from a 'Themes' subfolder to the folder specified with -dir if exists.
    -- Schema Sync could attempt to DROP and CREATE a Foreign Key in one ALTER TABLE statement in cases where a Foreign Key existed on both source and target specified on same columns but details for ON UPDATE and/or ON DELETE were different. This will not work and now two statements are generated.

  • Miscellaneous

    -- Explain Extended (executed by Query Profiler) now pops up an error dialog instead of logging to MESSAGES tab if an error occurs with the statement.

SQLyog 10.51 (December 2012)

  • Bug Fixes

    -- Executing a SQL-statement with a comment inside could cause the Query Profiler to send an incorrect EXPLAIN statement - thus raising a syntax error. This bug was introduced in 10.5.
    -- Accessing Visual Data Compare could raise the error 'Could not connect to SJA' on systems/user accounts with limited access to write to installation folder. The reason is that Visual Data Compare attempted to create temporary files in installation folder. They are now created in user's 'User Profile'.
    -- If the 'Custom Filter' or 'Foreign Key Lookup' dialog was open SQLyog did not appear in the list displayed by Windows ALT+TAB dialog.
    -- With (only) a view/procedure/function/trigger selected in Object Browser the 'Backup database as SQL dump' dialog did not open. This bug has existed since version 6.5.
    -- Fixed an issue in SJA mails with HTML-encoding of "<" and ">" -characters where they were not used for specifying HTML tags.
    -- Specific operations by user in the GUI could cause 'Export As SQL Dump' to show database objects of another database than expected.

SQLyog 10.5 (December 2012)

  • Features

    -- New major feature: "Visual Data Compare" (in short 'VDC'). It is a third option for Data Sync in addition to the two already existing ('one-way synchronization' and 'two-way synchronization'). A VDC-job is started from a modified version of the Data Sync wizard (from the 'powertools' menu). With VDC you will be able to compare differences visually and specify tables and rows that shall be sync'ed as well as to decide in what direction to sync. A SQL preview is available. VDC is an ULTIMATE feature.
    -- Explain and Explain Extended for queries can now be executed from Query Editor context menu. Also this is an ULTIMATE feature.
    -- Query Profiler now supports Explain for Insert, Update and Delete statements if server supports. MySQL servers from 5.6.3 servers do.
    -- Copy DB and Backup as SQL Dump will now respect the defined Object Browser filter if any.

  • Bug Fixes

    -- A style issue caused e-mails sent by SJA not to display properly in some clients. A <style> tag was placed in header section which is generally truncated/omitted by most mail clients. HTML styles are now embedded internally in the body of the mail.
    -- It was possible to rename a table by clicking it twice in the Object Browser. This functionality has been removed as it too easily could cause a table to be renamed by mistake. Tables can still be renamed from menu/context menu and corresponding keyboard shortcut (F2).
    -- Fixed an issue where autocomplete failed to handle identifiers with an underscore character properly.
    -- The selection in object browser was reset to the 'container node' of current object when a filter was defined or cleared. This will only happen now when a filter is applied and the currently selected object becomes hidden due to the filter setting.
    -- Fixed a painting issue in the Schema Sync dialog.
    -- Fixed an issue where autocomplete would display the same option twice. It happened in some cases if the same identifier was in use on different levels of the schema (such as if a table had a column named identically to the table itself).
    -- In Table Diagnostics, table list was not getting updated after selection was cancelled from database combo box.

  • Miscellaneous

    -- Removed comments from query when it is shown in History Tab, Messages Tab and Query Profiler.

SQLyog 10.42 (December 2012)

  • Bug Fixes

    -- Inserting a string literal identical to a supported 'smart keyword' from GRID/FORM view by enclosing it in backquotes (like `NULL`) did not remove the backquotes before insertion. This bug was introduced in 10.0 and the fix is backported from the current 10.5 development tree.
    -- When updating or deleting from the RESULT tab and if the tab displayed a JOIN of columns from multiple tables and if all columns of a composite Primary Key of one or more tables were not displayed a wrong DELETE or UPDATE query could be generated. Also this bug was introduced in 10.0.

SQLyog 10.41 (November 2012)

  • Bug Fixes

    -- SQL-exports did not 'quote' TIMESTAMP values. For that reason a dump with such data did not restore. This bug was introduced in 10.4.

SQLyog 10.4 (November 2012)

  • Features

    -- Added a filter in the Object Browser for hiding display of database objects here. More precisely: database objects, where the typed filter string is not a substring of the object identifier, will be hidden. When focus in on the connection node, the filter will act as a database filter. If focus is on a database, a table, a table folder or any sub-table object, it will be a table filter on current database. If the focus is on a stored program or stored program folder of any kind it will be a filter on that type of stored program in current database. The filter is specific for each database object (connection, tables of a database, or a type of stored programs of a database) and is persistent within a SQLyog session (but not persistent across sessions).
    -- NULL-values are now displayed with italics like (NULL). This eliminates any confusion with a literal value.
    -- Added ALT+F5 as a keyboard shortcut for refreshing a DATA tab.
    -- SQLyog will now "USE `mysql`;" when User Management is opened and reset the default database again when it is closed. Before using User Management on a replication master could break replication with specific binlogging settings. This is a workaround for what we consider a bug in MySQL.
    -- When 'rebuilding tags' in auto-complete we are now committing small transactions to SQLite. Before it was one big transaction. This ensures normal operations for indexed data while 'rebuilding tags'.
    -- Drastically improved auto-complete performance. This is actually the third time we do so, but recent additions to SQLite makes this possible again (technically autocomplete now uses SQLite 'WAL mode').
    -- Added support for the 'Windows authentication plugin' (available from MySQL 5.5.16).

  • Bug Fixes

    -- Fixed a 'commands out of sync' error when executing a stored procedure multiple times.
    -- Fixed a bug where the foreground/background color applied for Messages tab failed to paint properly.
    -- The 'SQL Scheduler and Reporting Tool' could fail to deliver server messages in mails sent.
    -- Creating views/sp's/function/triggers/events added statements twice to messages tab.
    -- The 'total time' displayed for a query would not always correctly calculate the sum of 'execution time' and 'transfer time'. This bug was introduced in 9.2.
    -- Improved Schema Sync performance if Foreign Keys were involved. We now execute fewer statements in such cases.
    -- A database name would not be completed by autocomplete if the database was listed in connection manager.
    -- Fixed some cases where autocomplete CTRL+Space/Enter incorrectly did not return a table/alias.
    -- Fixed some issues where autocomplete did not immediately return objects created - most important objects added by 'Import External Data' tool and 'Copy Database/Table to Other ..' would not display immediately. It was necessary to 'rebuild tag'. It is not now.
    -- Loading a Unicode file with BOMs (Byte Order Marks) into the editor could strip characters (3 characters with UTF8 - 2 characters with UCS2/UTF16) from the pasted content. A buffer length allocated did not consider BOMs properly.
    -- MESSAGES tab could display conflicting messages about warnings. This bug was introduced in 10.3.
    -- When copying from MESSAGES tab and pasting into SQLyog editor - or any editor or program - the pasted content could add garbage characters.
    -- 'Silent uninstall' was not working as expected.
    -- UPDATE statement generated by Data Sync did not use 'fully qualified table names' where as INSERT and DELETE statement did.

SQLyog 10.3 (September 2012)

  • Features

    -- The list of connections in Connection Manager can now be managed by typing directly in the 'dropdown'. What is typed acts as a 'prefix search' and first connection name starting with the prefix will be selected. This applies to both the Connection Manager of the main program as well as SJA wizards.
    -- Filter is implemented in the Schema Synchronization dialog for filtering tables and other objects. This is a 'exact match filter'. However SQL-wildcards ("_" and "%") may be used.
    -- Added a filter option to MESSAGES tab. You may show only queries returning a result set, queries not returning a result set, queries returning errors or queries returning warnings only as well as queries returning either warnings or errors. Also MESSAGES tab will now display the (first 128 characters of the) query.

  • Bug Fixes

    -- F6 shortcut did not open ALTER TABLE/DATABASE when the focus was outside the Object Browser.
    -- Adding '%' to the filter string in 'custom filter' was not handled properly and could result in wrong results. This was introduced in version 10.0.
    -- Updating an image stored in a BLOB field using the Blob Viewer could fail. Also this was introduced in 10.0.

  • Miscellaneous

    -- It is now default for new connections to use the GLOBAL sql_mode for the connection. But user may still specify whatever sql_mode he wants.

SQLyog 10.2 (July 2012)

  • Features

    -- Saved connections can now be exported and imported. The option is available in the 'tools' menu.
    -- Added an option to open exported CSV and Excel XML files directly with the program associated with the file extension on the system.

  • Bug Fixes

    -- Exporting Schema Designer canvas as image on Wine generated empty boxes for tables with no information about columns. It is actually a bug in Wine (incomplete Windows API implementation for drawing routines).
    -- The height of GRID-cells will now adjust to fit font setting for the GRID.

SQLyog 10.12 (June 2012)

  • Bug Fixes

    -- With specific settings for GUI appearance (DATA tab in lower pane, ‘autorefresh DATA tab on focus’ enabled) switching from one connection to another and back would reset filter in the first connection. This was introduced in 10.11.
    -- Editing data from GRID and pressing arrow-up/down key could scroll the view a full page. Also this was introduced in 10.11.
    -- ‘Export table as .. SQL’ from RESULT tab generated invalid SQL if the tab was in ‘read-only’ state. This was introduced in 10.0. Also ‘Export table as .. SQL’ has now been disabled for multi-table result sets. This is an old issue, but exporting data from multiple tables to SQL never made sense.
    -- SQL Formatter would add whitespace around non-ASCII characters in identifiers and aliases.
    -- The rowcount displayed in status line is now a count of rows available in current DATA/RESULT tab. Before it was the number of rows fetched from MySQL with the last executed SELECT query for that tab and did not reflect INSERTS and DELETES executed later from GUI. Also when a filter is used, the display will show the rowcount after applying filter. It did not before in RESULT tab.
    -- Small GUI fixes.

SQLyog 10.11 (June 2012)

  • Bug Fixes

    -- Pressing the ESC key while cursor was positioned in an empty row of the GRID could cause a crash. Introduced in 10.1.
    -- ‘Hide optimal datatypes’ of a table in INFO tab/HTML view did nothing. Also this was introduced in 10.1.

SQLyog 10.1 (June 2012)

  • Features

    -- It is now optional whether DATA, INFO and HISTORY tabs shall display in ‘upper pane’ (as in 10.0) or in ‘lower pane’ (as before 10.0). The setting is available in tools .. preferences .. general. Note that for DATA tab this applies to the ‘non-sticky’/non-persistent DATA tab. A ‘sticky’/persistent DATA tab will always display in ‘upper pane’.
    -- DATA, INFO and HISTORY tabs appearance will now be persistent across sessions when configured to display in upper pane. If visible when program was closed they will open when program starts next time – if hidden when program was closed they will not. When configured to display in lower pane they will always be visible.
    -- The checkbox to ‘select all’ as added in DATA and RESULT tab in 10.0 is now implemented all over the program, including SJA wizards.
    -- The background color for the editor can now be defined by user. Same applies to Query Builder and Schema Designer canvas. Also settings for syntax highlighting in the editor can now be defined using a full color palette.
    -- Multi-column sort in DATA tab now uses CTRL+CLICK modifier when clicking the column header. A simple CLICK (with no CTRL) will discard previous sort setting (if any) and do a single-column sort.
    -- Added an option to copy selected text into clipboard with all whitespace (SPACE characters, TAB characters and linebreaks) replaced with a single SPACE character. The option is available from menu and the keyboard shortcut ALT+C .
    -- Sorting (single-column) of results is now possible in Data Search tab.

  • Bug Fixes

    -- With Windows classic theme enabled, switching SQLyog’s theme could replace the ‘minimize’ button with garbage text.
    -- ’Paste SQL statements’ could crash COMMUNITY. This bug was introduced in 10.0.
    -- Persistence of display mode (GRID, FORM, TEXT) will now only have effect after the tab has loaded with data. If user interrupts loading of data the current mode will not change.
    -- Since version 10.0 undefined data of an auto-increment column will display as “AUTO” and not “NULL”. But with specific table definitions “AUTO” could display for the wrong column.
    -- Editing second and higher table from a multi-table result set could fail due to incorrect SQL generated. Introduced in 10.0.
    -- In the Import External Data mapping columns dialog, using “Edit SQL” to view/edit the query could generate a query with an incorrect encoding of the statement. As a consequense the statement failed.
    -- If an existing connection (in connection manager) with unsaved changes is open “New Connection using Current Settings” would not take the current settings, but the settings saved for the connection instead.
    -- The query generated for INSERT from table data/result tab now include only values entered by the user. Columns that were not specified by user are not listed in the statement. UPDATE bahaved like this for a long time, but INSERT did not. This could result in an error when inserting to a table with NOT NULL column(s) with no DEFAULT defined.
    -- When SELECT was executed, Auto-paging in Result tab was always enabled even if the option “Enable Autopaging in Data/Result tab” was unchecked. This bug was introduced in 10.0 with the common LIMIT setting for DATA and RESULT tab.
    -- Updating and deleting from RESULT tab could fail if PK-column(s) were not included in result set. This bug was introduced in 10.0.
    -- In a 'fully qualified' object name (`database`.`table` etc.) there may be SPACE characters on both sides of the ".". SQLyog did not handle this and with autocomplete enabled a crash could occur as autocomplete was not able to identify object name(s) correctly.
    -- 'Export as Excel XML' could generate an empty file with no data. This bug was introduced in version 10.0.
    -- When inserting/updating the last column in a row in Data/Result tab, pressing tab from keyboard would point to the first coulmn of the next row but the scroll bar failed to bring the selected column into display. This bug was introduced in 10.0.

SQLyog 10.0 (May 2012)

  • Features

    -- The DATA tab is now moved to the upper pane. This completes the GUI redesign we started with version 9.5 (but we will continue after 10.0 release to provide optionality for this). A DATA tab will now open from table menu/context menu, keyboard shortcut F11 or from the “+” icon to the right of open query etc. tabs. Also if not the option to ‘paste object name to editor on double-click ‘ is selected in ‘preferences’ it will open on double-click on the table in Object Browser.
    -- Added an option to open a DATA tab in ‘sticky’/persistent mode. A DATA tab opened like this will remain open until closed manually by user. If a DATA tab is opened in ‘non-sticky’/non-persistent mode it will be replaced when opening another table in ‘non-sticky’/non-persistent mode.
    -- Redesigned the tool bar in DATA and RESULT tab including new icons.
    -- SQLyog now opens as default with a blue-colored interface. The old non-colored interface can be selected from preferences .. ‘others’ tab .. ‘theme’ (the 10.0 blue default theme is named ‘twilight’). Currently ‘themes’ to the main program dialog only and not popup dialogs. It is actually possible for user to modify a ‘theme’ or to create his own ‘theme’. Information about this will appear after GA release.
    -- Several improvements to Schema Sync performance: 1) Before an ALTER TABLE statement would be generated for every schema change. Now in most cases they are aggregated to a single ALTER TABLE statement. 2) Optimized queries and internal processing.
    -- The current row in DATA and RESULT grid can now be selected using Ctrl+SPACE.
    -- Added multi-column filter and sort option in Table data tab.
    -- Added a control for select all/deselect all rows in DATA and RESULT grid.
    -- Keyboard shortcuts added: 1) Ctrl+Alt+V will now rotate between GRID, TEXT and FORM display modes for DATA and RESULT tab. 2) ALT+Ins and ALT+Del shortcuts added in Table data/Result tab/Data search for Insert and Delete like already available in CREATE/ALTER TABLE.
    -- Selection of any display mode (GRID, FORM, TEXT) is now persistent in RESULT tab. The currently active mode will have effect when executing a new query.
    -- SQLyog installers are now digitally signed. When downloading with IE9 a false warning appeared due to lack of certificate and also UAC ('User Account Control' of Vista+ Windows) would warn that the program was from an 'unknown publisher'.
    -- When upgrading, the installer will now remember what shortcuts were created previously'.
    -- Table data will now read default limit values from preferences. Same default setting now applies to both DATA and RESULT tabs.

  • Bug Fixes

    -- Using a WHERE clause in data sync could cause the wizard to terminate prematurely. This bug was introduced in 8.6x.
    -- Import external data could generate incorrect SQL when a Primary Key was present in source and PK-column(s) were not selected for import.
    -- Fixed a crash occuring when opening a file that was not a valid jobfile from a SJA wizard.
    -- SQLyog could crash when connected with HTTP tunnel and exporting to a fixed-length CSV-file.
    -- Quite a lot of GUI fixes.

  • Miscellaneous

    --The shortcut to 'execute all queries' has been changed from SHIFT+F9 to CTRL+F9 . This is changed because SHIFT+F9 on some keyboards (including most English keyboards) could easily be mistyped if user wanted to type a bracket ( "(" or ")" ).

SQLyog 9.63 (March 2012)

  • Features

    -- Added an option to specify the font used in the Object Browser.
    -- Schema Sync now has an option to add SET FOREIGN_KEY_CHECKS = 0 to the script generated.
    -- Added an option to specify INIT_COMMAND(s) for a connection. INIT_COMMAND(s) are executed when SQLyog connects and reconnects. The primary purpose is to override settings specified with ‘init_connect’ setting in server configuration for the SQLyog session. For instance if ‘init_connect’ server setting specifies “SET AUTOCOMMIT = 0" you may enter “SET AUTOCOMMIT = 1" in the SQLyog connection manager if you want a non-transactional behavior for the SQLyog session.

  • Bug Fixes

    -- If both a column default and a column comment was specified in CREATE/ALTER TABLE a SPACE-character was missing in the generated statement causing invalid syntax error. This bug was introduced in 9.5.
    -- Fixed a crash (reported internally) in the ‘Indexes’ tab of the CREATE/ALTER TABLE interface.
    -- Schema Sync did not handle BIT-column defaults properly. A redundant apostrophe caused the statement generated to be invalid.
    -- Also if Schema Sync operated on a table where only column-level comments differed on source and target an invalid statement would be generated.

SQLyog 9.62 (March 2012)

  • Features

    -- A Korean translation is now included.

  • Miscellaneous

    -- The localization tools have been updated. The compiler for building localizations is now up to 100 times faster than before. Also the XML has now been properly versioned.

SQLyog 9.61 (February 2012)

  • Features

    -- A Chinese (Simplified) translation is now included.

  • Bug Fixes

    -- When there was an INFO tab open the server was unnessarily queried for the content of the INFO tab (based on Object Browser selection) when closing the program. This could cause a slow shutdown.
    -- Fixed a crash occurring when pressing the ESC key in the CREATE/ALTER tab/dialog. This bug was introduced in 9.6.

SQLyog 9.6 (February 2012)

  • Features

    -- When performing CREATE/ALTER TABLE operation from inside the Schema Designer now a dialog with a tabbed interface similar to the CREATE/ALTER TABLE tab will open.
    -- It is now optional if Query Builder will create statements with ‘fully qualified tablenames’ or not.
    -- Implemented Alt+Ins, Alt+Del, Alt+Up and Alt+Down for inserting, deleting, moving up/down the rows in CREATE|ALTER TABLE interface when the focus is on respective grids. The tooltip for the toolbar buttons will now show this shortcuts.

  • Bug Fixes

    -- In Data Sync a low setting of ’max_allowed_packet’ on source server could result in CONCAT_WS() used for checksums’ calculation returning NULL. We did not consider this and as a consequence rows could fail to sync without warning. We will now abort the job with an error message (if user has selected to ‘abort on error’) or print an error to the sja.log file and the console (if user has selected not to ‘abort on error’ ) informing that some rows may have been skippped in such cases.
    -- The fix for empty string defaults in 9.51 was not complete. It was (unlike 9.5) possible to create such default but it did not display as '' after creation in ALTER TABLE.
    -- If multiple databases with same name existed only differing in lettercase SQLyog would generate certain statements using the ‘mostly lowercased’ database name. This bug was introduced in 9.5.
    -- Autocomplete runs in a separate connection, but also when Autocompelte was disabled this connection was created for no reason.
    -- SQLyog sometimes waited unnecessarily long (30 seconds - what is the client timeout setting we use internally) to report that SSH connection could not be established. This happened for instance if a wrong RSA passphrase was entered. In such and other cases there is no reason to wait for client timeout.
    -- Small fixes - mostly GUI fixes to the new CREATE/ALTER TABLE interface.

SQLyog 9.51 (January 2012)

  • Features

    -- The active database context is now highlighted in Object Browser using a bold font.

  • Bug Fixes

    -- Drop-downs in the DATA and RESULT tab grid (used by SET and ENUM columns) could ‘drop down’ where they should ‘drop up’ instead.
    -- Specifying empty string defaults for strings columns was broken in 9.5.
    -- Fixed a rare crash caused by an undocumented behavior from the Windows API resulting in division by zero. Crash is now avoided by adding an additional condition check.
    -- Fixed a painting issue in the Foreign Key tab in the new (from 9.5) tabbed interface for CREATE/ALTER TABLE that could render the interface here unusable on some systems.
    -- Other minor fixes with CREATE/ALTER tabbed interface.

SQLyog 9.5 (December 2011)

  • Features

    -- All CREATE TABLE and ALTER TABLE GUI functionalities will now open in a non-modal tabbed interface. The new tab appears in the SQL area (alongside Query tabs etc.).
    -- HISTORY and INFO tabs will now also appear in the SQL Area. The rationale is that those are not related to a specific (set of) query(ies). We plan to move the DATA tab up there as well for same reason.
    -- When SQLyog opens, the SQL Area will now open the HISTORY tab, INFO tab, and a single QUERY tab. Other tabs belonging in this area can be opened on demand. HISTORY and INFO tab display are persisitent across session (ie. if one is closed when SQLyog closes down it will not diplay when SQLyog is opened next time – but may be opened by user, of course).
    -- Search is now possible in INFO tab/text mode and in HISTORY tab. CTRL+F will open the 'Find' dialog.
    -- Foreign Key lookup now works across databases.

  • Bug Fixes

    -- The BIT datataype was not supported properly in text-mode.
    -- On COMMUNITY if the SQL Area was increased to fill all vertical space, the divider could not be dragged back.
    -- In ‘Execute SQL-script’ it is now optional if the complete script should abort or not if an error was encountered. Before it always aborted. The fix does not apply to HTTP tunnel where we will still ‘abort on error’ always.
    -- Copying to clipboard could erroneously raise an ‘out of memory’ error. This was a miscalculation.
    -- ‘Import External Data’ GUI now supports SHIFT+CLICK selection of objects.
    -- The connection manager GUI’s of the SJA wizards did not handle SSL certicates properly (the main program window did not suffer from this).
    -- If an ENUM/SET column was returrned using an alias the drop-down combo in the RESULT GRID did not display.
    -- Underscores were not handled properly by Autocomplete.
    -- Syntax highlighting is now not used in INFO tab. It made sense for the CREATE statement only and was disturbing in other contexts.
    -- A default for a BIT datatype could not be specified properly. Now b'..' and x'..' notation may be used when specifying column defaults.
    -- Closing a query tab with multiple result sets could cause a memory peak and raise an out of memory error.
    -- When connected to pre-4.1 servers non-ASCII characters could garble.
    -- Duplicate table failed to copy spatial indexes.

SQLyog 9.33 (November 2011)

  • Bug Fixes

    -- Fixed two regression bugs in Autocomplete introduced in 9.31: 1) A performance regression if the option to “Show suggestion as you type in SQL editor” was enabled. 2) Table alias support was broken. -- The Autocomplete popup windows opened by Ctrl+Enter and Ctrl+Space could ‘pop down’ where it should ‘pop up’ resulting in the content being partly invisible. This bug was introduced in 9.31.

SQLyog 9.32 (November 2011)

  • Bug Fixes

    -- Typing using the numerical keypad typed nothing in the SQL editor. This bug was introduced in 9.31.
    -- With Japanese interface enabled some favorites items could fail to display.

SQLyog 9.31 (November 2011)

  • Features

    -- Improved the handling of (built-in and stored) functions and stored procedures in Autocomplete. This involves 1) A stored program is now handled also if a ‘fully qualified routine name’ is not used. 2) Introduced a Ctrl+Shift+Space keyboard shortcut that will display the parameter-list of a routine when the cursor in positioned inside it. 3) While writing a routine call the parameter list will highlight the current parameter. Also note that we have also reversed the behavior of Ctrl+Space and Ctrl+Enter keyboard shortcuts for Autocomplete – this in order to comply with most IDE’s and advanced editors.

  • Bug Fixes

    -- Schema Sync could generate an incorrect ALTER TABLE statement with an A TIMESTAMP .. ON UPDATE CURRENT_TIMESTAMP column on source. This bug was introduced in 8.4.
    -- On Wine the status line (at the button of the program window) did not display. This was introduced in 9.3.
    -- The Keyboard CTRL+SPACE did nothing on Wine. Now CTRL+SPACE and CTRL+ENTER behave identically on Windows and Wine.
    -- On Wine the autocomplete popup window painted with a frame hiding some details.
    -- When Japanese language was selected for the program interface ‘Copy Database/table’ returned an error. Also this was introduced in 9.3.

SQLyog 9.3 (October 2011)

  • Features

    -- This release adds a Japanese translation of the User Interface.

  • Bug Fixes

    -- The data display area in Data Search tab did not handle text mode.
    -- The Autocomplete popup windows did not allow 'rotation' from bottom to top (and vice versa) using arrow keys.
    -- A user variable using a keyword after "@" (like "@SELECT") would be handled like a keyword by syntax highlighting. Now it is not.

SQLyog 9.2 (July 2011)

  • Features

    -- The ‘Foreign Key lookup’ introduced in 9.0 is now also available in RESULT tab. With HTTP-tunnel this is not possible however.
    -- Added a calender control for managing DATE, DATETIME and TIMESTAMP columns.
    -- Data Search enhancements: 1) Added an option to search on column level. 2) Added Google-style “+” and “-” operators meaning ‘exact match’ and ‘not matching’. ‘+’ and -’ may be combined with “double quotes” and the NULL keyword. 3) Added an option to use hexadecimal patterns for search using x’..’ notation (note that this feature requires MySQL 4.1 or higher). 4) Added a filtering option. You may select to search specific data types only and/or a subset of databases in a connection, a subset of tables in a database or a subset of columns in a table. 5) 'Data Searach' item was added to object (context) menus where it applies.
    -- Added an option to clone a connection in the connection manager.

  • Bug Fixes

    -- After query execution from editor messages from one connection were always sent to the topmost connection window even though the active connection was not the topmost.
    -- On Windows Vista and higher CSV-import of numerical data written in ‘scientific notation’ failed.
    -- Fixed a crash with ‘stored programs’ if the ‘stored program’ definition was loaded from a file with a long name (too long to display fully in the tabbed interface). This bug was introduced in 9.1.
    --     ALTER VIEW could fail to open the view definition in MySQL 5.1+ if an underlying table was ALTERed after creation. This is actually a server bug due to which SHOW CREATE TABLE failed. SQLyog now works around this bug by fetching the VIEW definition from information_schema if SHOW CREATE TABLE fails. One limitation of this is that the ALGORITHM clause will not necessarily be the exact one specified while creating the VIEW as Information_Schema has no record of the ALGORITHM clause.
    --     Execute SQL Script will now show data transfered in percentage rather than the size. Once the execution/import is succesfull it will show the total size.
    -- Removed extra whitespace in query when displayed in the message tab due to an error.
    -- The execution time displayed for a query is now formatted for better readability. Note that English decimal notation (".") is always used.
    -- Fixed a segmentation fault (crash) in the 'SQL Scheduler and reporting tool' of SJA for Linux.
    -- Form View discarded the column alias while displaying the result.
    -- Added *.ppk filter in SSH private key file open dialog.
    -- F1 opened wrong help page when pressed from Table Data/Result Tab.
    -- Fixed an issue were selecting the auto_increment option in 'Import External Data' wizard had no effect.

SQLyog 9.1 (June 2011)

  • Features

    -- Added an option to ‘Search Data’ in a database or a table. Just enter any string and click on search to find the string - using same logic as internet search engines. Also search using regular expressions for complex searches - and tables with all matches can be accessed – even for UPDATE – with a single click.
    --     Quite a lot of dialogs have been made resizable. This includes ‘Reorder Columns’, ‘Copy Table’, ‘Add Favorites’, ‘Organize Favorites’, ‘Export as SQL Dump’, ‘Export As (CSV/html/…)’, ‘Table Diagnostics’, 'Schedule jobs' and ‘Copy Database’. Those left that are not resizable now are either those where it would not make sense and some that will very soon be replaced with another interface.
    -- Redesigned the ‘advanced’ option in Import External Data tool.
    --     When using the option to define a display color for a connection the background color and the foreground color can now be defined independently.

  • Bug Fixes

    -- The ‘Job manager’ could fail to add jobs from the SJA wizards. This bug was introduced in 8.8.
    -- Import External Data could fail to display all columns of target table when importing from a source containing lesser columns than target.
    -- In TEXT mode the last row of data could fail to display if it contained a NULL value.
    -- Export (to various formats) could cause SQLyog to ‘hang’ with tables with 500+ columns.
    -- In ‘export as Excel XML’ it was possible to enter alphabetics for numerical parameters and the result of the export was unpredictable.
    -- In ‘Import External Data .. advanced’ the complete job would abort even if user had only specified an abort condition for a single table. Also when the table was not present in the target and abort option was selected only the table structure was created and no data were imported. These bugs were introduced in 9.0.
    -- In ‘edit’ menu the shortcut to ‘execute query’ was always displayed as F5 irrespective of user setting. This is a regression introduced in 9.0.
    -- The 'Format Current Query' option in tool bar has been replaced with 'Format Query'. Now If there is a selection it will format the selection, otherwise it will format the current query.

  • Miscellaneous

    -- When opening SQLyog will now display a Query tab and a Data Search tab (and no Query Builder or Schema Designer tab as before).

SQLyog 9.02 (April 2011)

  • Bug Fixes

    -- The option in 'preferences' to 'Keep focus on SQL editor after query execution' did not have any effect. This bug was introduced in 9.0.

SQLyog 9.01 (April 2011)

  • Bug Fixes

    -- Introduction of the option to TRUNCATE TABLE in the ‘Import External Data Tool’ introduced a bug. If user selected DROP+ (RE)CREATE TABLE only structure would be created but data would not be imported.

SQLyog 9.0 (April 2011)

  • Features

    -- Added an option (in GRID and FORM view) to look up/search valid values for columns having Foreign Key CONSTRAINTS.
    --     In CSV-exports NULL-values can be written as a user-specified string. “\N’ is default for compliance with MySQL (SELECT INTO OUTFILE and LOAD DATA), but for use with other programs (such as spreadsheets) other options may be relevant.
    -- Added an option to automatically add ‘child’ tables to selected tables (before it was only possible to add ‘parent’ tables) in Schema Designer and Query builder.
    -- Added a “Change Background Color” option in Edit menu
    -- A foreground color for text display contrasting a defined background color is now automatically provided by SQLyog in Object Browser and Connection tab.
    -- The visual effects of tabs have been improved with continued scrolling support. There is a + icon next to the last tab which provides options to add new tabs.
    -- In ‘Import External Data’ there now is an option to TRUNCATE target tables. Before only DROP+CREATE was possible.
    -- In 'Import External Data' added an option to discard/clear column DEFAULTs. Some ODBC-sources use default specification that will not work with MySQL.

  • Bug Fixes

    -- Data entered from the GUI to mange ENUM/SET types were not escaped properly what caused problems with the ” ‘ ” (single quote) and ” \ ” (backslash) character.
    -- Focus in Object Browser was lost when creating a Stored Procedure.
    -- There is now a button/link to open the log file in each dialog wherever it is referred.
    -- Fixed an issue where non-binary data were displayed as “(Binary/Image)”.
    -- Now TAB/SHIFT+TAB keys will rotate through buttons, check-boxes and tools in Result/Table Data tabs.
    -- Fixed a crash occurring when running Schema Sync and a Query Builder or Schema Designer TAB was active in the program main window.
    -- Fixed a truncation issue while importing binary data from PrimeBase server.
    -- When repeatedly stepping forward and backwards in SJA wizards most recent data entered by user could be lost and replaced with previous values.
    -- Deleting multiple rows af a table without a Primary Key could crash SQLyog. This bug was introduced in 8.8.
    -- Fixed a crash occurring when connecting on some Windows 7 systems with Service Pack 1 installed.
    -- While formatting multiple queries the SQL formatter now does not add a new line if a new line already exists between two queries. Formatting multiple times would insert new empty lines between queries for each cycle.
    -- A few more Query Formatter ‘refinements’.
    -- When closing a Query tab or a Query Builder Tab user was promted to save even if he/she had 'blanked' the content of the tab. Now it does not unless the tab was populated from a file. SQLyog will still prompt user to save in this case.
    -- A small GUI fix with the ENUM/SET dialog.
    -- After dropping a column from Object Browser context menu focus in Object browser would change randomly. Now focus will be retained on the parent COLUMNS folder.
    -- SQLyog could crash when attempting to delete rows from the table having a foreign key constraint. This bug was introduced in 8.82 due to improvements made in scrolling.
    -- SQLyog could crash while the table contents were being loaded in table data tab and the user tried altering the table at the same time.
    -- If server had timed out the connection SQLyog could fail to reconnect when opening a 'stored program' definition.

SQLyog 8.82 (February 2011)

  • Bug Fixes

    -- Exporting could fail with the 'PAD_CHAR_TO_FULL_LENGTH" sql_mode (introduced in MySQL 5.1.20) set globally. This bug was introduced in 8.8. We now use the '' ('empty') sql_mode for the background thread where the export is running.

SQLyog 8.81 (February 2011)

  • Bug Fixes

    -- Fixed a serious bug in User Management where assigning a new password to a user created a new user instead. This bug was introduced in 8.8.

SQLyog 8.8 (February 2011)

  • Features

    -- In Schema Sync and ‘copy database’ connections are now identified with their color code as defined in the connection manager.
    -- In ‘Import External Data’ import of Foreign Keys/relationships are now disabled as default when importing from Access and the interface has been clarified in this respect. The reason is that unless Access security settings are changed for the database it is not possible to import Foreign Keys/relationships and an error would occur if not security settings allowing for exposing relationships were defined.
    -- Implemented a tooltip on Query tabs (including Query Builder and Schema Designer tabs) displaying full path to file (if any).
    -- With HTTP-tunnel there is now an option to specify a MySQL socket file for connection to MySQL. Note that in that case MySQL ‘host’ and ‘port’ settings are ignored (if any). Due to this added functionality the tunneler file for HTTP-tunneling has been updated with this release.
    -- Hexadecimal and binary/base2 strings can now be entered for any datatype using ” x’..’ ” and ” b’..’ ” notation in GRIDs. SQLyog will now not ‘quote’ such values starting with “x’” and “b’” when performing DML operations from the GRIDs.
    -- Implemented support for the BIT datatype. In DATA and RESULT tab BIT’s will now display using ” b’..’ ” notation what in combination with the point above ensures that BIT data are updateable. Note that with HTTP-tunnel this is not functional in RESULT tab as PHP does not provide sufficient meta-information for a result set to decide column-widths.
    -- Drastically improved memory management in DATA and RESULT tabs. This allows for larger result sets in memory and improves scrolling. This also fixes a bug introduced in 8.7 where scrolling could render wrong values displayed in the GRID.
    -- Added an option in GUI to specify a sql_mode for the connection as well as for using the GLOBAL mode for the SESSION.
    -- Added CTRL+ALT+L keyboard shortcut for switching GRID and FORM mode.

  • Bug Fixes

    -- SQLyog will now never use TIMESTAMP(14) but only TIMESTAMP. TIMESTAMP(14) returns an error in MySQL 5.5.
    -- Fixed a truncation when importing data from ‘standalone’ Primebase server (note: not MySQL with PBXT storage engine. This never was a problem).
    -- When editing a very large ENUM-list SQLyog could crash.
    -- Schema Designer did not properly keep track of names of renamed tables.
    -- Fixed a truncation of display in Form View with specific character sequences.
    -- Right-clicking a JOIN line/symbol in Query Builder could fail to bring up the JOIN properties dialog.
    -- The SQLyog editor highlighted a keyword followed by a dot as a keyword instead of recognizing it as an identifier.
    -- While ‘rebuilding tags’ autocomplete did not return database objects.
    -- The option in ‘preferences’ to ‘generate queries using backticks’ did not have effect when double-clicking an identifier name into the editor. This is fixed and additionally now also autocomplete will ´backtick`objects if the preferences’ option is selected.
    -- Modified the SQLyog installer to prevent installing on an unsupported platform.
    -- Fixed a bug in automatic indentation introduced in 8.7. The cursor was not indented correctly following the previous line if indentation was more than one SPACE or TAB character.
    -- An orphaned PLINK instance could be left running when closing a SSH connection. It would typically happen with rather slow servers or connections and when connection was closed very shortly after it was establishedr.
    -- When formatting multiple SQL queries SQLyog removed empty lines between queries.
    -- There was no option not to save connection details when connecting with new connection details. The Connection Manager fix in 8.7 missed that point.
    -- In data sync wizard "all columns" option in the GUI drop down should be checked and displayed. But the "all columns" option was unchecked and it also truncated to "A".
    -- The 'Scheduler and Reporting' Tool (formerly 'Notification Services') was sending a blank email for successful execution of insert and update queries.
    -- When a Primary Key column contained negative values Data Sync could sometimes skip some rows.
    -- Immediately updating a newly inserted row could fail because of using wrong value in WHERE clause. This also affected rows inserted with 'duplicate row'.
    -- Lots of GUI fixes and lots of internal optimizations.

  • Miscellaneous

    -- ‘Notifications Services’ was renamed to ‘SQL Scheduler and Reporting Tool’

SQLyog 8.71 (November 2010)

  • Bug Fixes

    -- In Form View if a BLOB/TEXT column contained specific sequences of non-ASCII characters the button to open the BLOB viewer would not display correctly.
    -- When updating from the RESULT tab and when using HTTP-tunnel identifiers were not `backticked`. For same reason the update would fail with identifiers containing SPACE or other characters requiring `backticks` in the statement. This bug was introduced in 8.7.
    -- ‘Copy Database’ GUI did not display the connection name of the source database.
    --     The fix in 8.7 that autocomplete could sometimes delete the character following cursor position was not complete.

SQLyog 8.7 (November 2010)

  • Features

    -- Added an option to reorder TABs using drag’n'drop in the GUI. The option is available for connection tabs as well as Query/Query Builder/Schema Designer tabs.
    -- Added ‘FORM view’ option (in addition to ‘GRID view’ and ‘TEXT view’ already available) for managing data in DATA and RESULT tabs. ‘FORM view’ will display one row at a time and is in particular convenient when entering data from the keyboard. Auto_increment columns are handled. Other CONSTRAINTS must be handled by user. FORM view is an ENTERPRISE/ULTIMATE feature.
    -- As a consequence of the above CTRL+L keyboard shortcut will now ‘toggle’ between TEXT mode and either GRID-mode or FORM-mode (which is active).
    -- The Query Formatter is now completely rewritten. In principle all types of SQL statements are now supported and all limitations with the old implementation are lifted.
    -- Inside ‘pseudo comments’ (like /*! .. this .. */) “paranthesis’es matching” is now enabled. Inside plain comments it is still disabled.
    -- The Editor now has a ‘folding option’. Multi-line code and comment blocks between bracket-pairs, BEGIN-END pairs, C-style comment pairs (/* and */), WHILE-END WHILE pairs, LOOP-END LOOP pairs, REPEAT-END REPEAT pairs and CASE-END CASE pairs can now be ‘folded’ in/out (ie: hidden or unhidden).
    -- Autocomplete will now backquote table name (+ routine name etc.) if databasename is backquoted when inserting first-mentioned after a “.” (dot).
    -- There is now no size limit on files to be opened in the editor (except for available memory).
    --     When inserting rows both GRID-view and FORM view will now indicate auto_increment columns as (Auto) for easy identification. Normally user should not enter those, but let the server handle.
    --     The fix for slow initialization with large autocomplete databases that was introduced in 8.62 and reverted again in 8.63 is now included again. It has stabilized with this build.
    --    When backing up 'all databases' with 'scheduled backup' the Performance_Schema database (as of MySQL 5.5) will now not be included in the backup. This is similar to how Information_Schema always was handled.
    --     We have reverted back the automatic proxy detection in upgrade-check. We had a few reports that it could cause a crash when the machine was awakening from standby and hibernation. Only Win7 Professional edition seems affected.
    --     When updating from RESULT tab we will now handle the database context automatically. The database context as selected by user is not used. Note that this applies to MySQL 4.1+ server and when not using HTTP-tunnel (as pre-4.1 MySQL and PHP do not expose the database in the result set)
    -- The c    aption (in 'tools' menu) ‘Restore from SQLdump’ was changed to ‘Execute SQL script’.

  • Bug Fixes

    -- Fixed formatting issues with text-mode if multiple multi-line string columns were displayed.
    -- The ‘persistence setting’ for ‘all rows’ in DATA tab would sometimes be forgotten.
    -- If scrolling in GRIDs is done using Scroll Bar (including Scroll Bar context menu) focus will now not change and will remain on the previously selected row. However navigation between rows in GRID using Pageup/PageDown will still change the focus between rows.
    -- If more than 9 Query etc. tabs were open it was not possible to navigate beyond the 9'th using keyboard shortcuts. Now ALT+9 will select the last tab (for connection tabs same was implemented in 8.5)    .
    -- Improved vertical scrolling in GRIDs with a large number of rows displayed.
    -- “EVENT” was not recognized as a keyword by syntax highlighting and autocomplete. Also "ARIA" (the new name for the 'maria' Engine in mariaDB 5.2) is now recognized as a keyword.
    -- Schema Sync will now show columns in the order they are defined in the table. Before they were alphabetically sorted.
    -- Removed redundant COMMENT clause in the ALTER script generated by Schema Sync.
    -- If 0 (zero) was given as the default value for a timestamp column CREATE/ALTER TABLE table would raise a syntax error, as SQLyog was quoting the default value as ’0'. Also specifying NULL as default (what is redundant for a NULLable column) would fail for similar reasons.
    -- ‘–-’ (two hyphens) followed by TAB (not only SPACE) is a valid MySQL single-line comment. We did not handle TAB in this context.
    -- Fixed a crash while copying to clipboard from table data/result tab.
    -- Autocomplete could sometimes delete the character following cursor position.
    -- CREATE/ALTER TABLE now ignores NULL entered as default for a NULLable column. It is redundant. Before invalid syntax was generated.
    -- With specific user operations in Connections manager a connection could be saved even if user replied NO the the ‘save question’. Also the connection manager now does not prompt user to save changes if only password/passphrase is changed and it is selected not to save password/passphrase.
    -- The FIND dialogue sometimes failed to keep focus on the FIND dialogue itself (recent fix was not complete).
    -- The dialog for defining ENUM/SET values was not showing when the ENUM/SET cell got focus using keyboard(when using mouse it was working as expected). Also it could open when another cell in same row of GRID had focus.
    -- When an existing jobfile for Data Sync was opened the order-of-tables in the jobfile was not honoured. It is now. This is in particular relevant for users using TRIGGERS as there is no way temporarily to disable TRIGGERS in MySQL.
    -- SJA for Linux was exporting file size upto 2 GB only (a compiler flag allowing for 'large files' was missing in build script).
    -- SJA for Linux did not show any error in mail or in console if it failed to connect to server. We will now notify both places (provided that 'send mail' option for the job is enabled).
    -- With a large number of rows displayed GRID could display garbage and fail to identify properly BLOB/TEXT data belonging to the row.
    -- When a new row had just been added from GRID it could be deleted even if user specfied another row to be deleted.
    -- Horizontal scroll bar in Query Editor and History Tab was not proper with long lines.
    -- Several small GUI fixes.

SQLyog 8.63 (October 2010)

  • Bug Fix

    -- The fix for slow initialization with large autocomplete databases in 8.62 has been reverted with this build. It introduced other issues like a possibility of SQLite database corruption and crashes. The fix will be added to 8.7 development tree when stable.

SQLyog 8.62 (October 2010)

  • Features

    -- INFO tab/HTML mode now displays a count of each type of database objects.
    --     SJA now supports an additional -r parameter that tells how big CHUNKS should be when copying to an empty table. The -r parameter has only effect with Data Sync jobs and is ignored with other types of jobs. This is a command line option only that is not supported from the GUI Wizard.
    -- GUI improvement in Data Sync Wizard clarifying the difference between syncing ‘All tables’ (existing at any time) and all tables existing at the time of building the job. It is now also much easier to select ‘almost all tables’ for a Data Sync job.
    -- Data Sync will now ignore differences as regards indexes on source and target tables except for the Primary Key/Unique Index used for sync. There is no need to require that all indexes are the same.
    --SJA for Linux had a dependency on the ‘libstdc++.so.5' shared library that is not installed as default on some recent Linux distros. This and similar dependencies have been solved with this build. The download size has increased but it is necessary to ensure that SJA will run ‘out of the box’ on all Linux systems.

  • Bug Fixes

    -- While Viewing Advanced Properties of table SQLyog executed SHOW TABLE STATUS with no LIKE clause. That could be slow.
    -- Fixed a crash when copying to clipboard from RESULT tab.
    -- If an external file was imported through BLOB-viewer the ‘dirty flag’ displaying a warning that data were not saved would not display in GRID.
    -- Changed the keyboard shortcut for Save Changes in User Manager for consistency with normal Windows practice.
    -- Fixed a crash when deleting a row from RESULT tab.
    -- Invoking specific keyboard shortcuts (Ctrl+TAB, Ctrl+F4) could cause a crash if a background connection thread (Schema Sync, Copy Database, Restore from SQL Dump, Back up database as SQL Dump) was running.
    -- Working with TRIGGERS could be very slow (in Schema Sync, backup etc.). This is due to an issue with Information_Schema. We now use a SHOW syntax that is not affected.
    -- Schema Sync prefixed a VIEW-name with the database name and thus it failed if source and target databases were not named identically.
    -- Schema Sync did not consider ALGORITHM and SQL SECURITY -clauses for a VIEW.
    -- When executing multiple queries the ‘execution time’ information displayed in status line was for a single query. Now we will aggregate for all queries.
    -- Removed result tab and profiler tab from a newly opened query tab. There is no information to display at that time.
    -- Find & Replace was setting the focus back to the editor whenever a match was found.
    -- SJA wizards were always opening up in the center of primary monitor even though SQLyog was running in another monitor.
    -- Right clicking on scroll bar of different windows was not popping up the scroll context menu.
    -- Data Sync was ignoring any table names with more than one leading SPACE character saved in job files.
    -- Data Sync was not allowing anonymous users to connect while reading the connection details from job files.
    -- Parenthesis’es highlighting inside ‘single quoted string’, “double quoted string” and `quoted identifier` is disabled now.
    -- Fixed a crash that could happen due to memory corruption while adding queries executed in Schema Designer to History tab.
    -- When updating a resultset from RESULT tab SQLyog failed to use the Primary Key alone in the WHERE clause if the SELECT query populating the RESULT tab used a table alias in the FROM clause. Updates could then fail if there were floating point columns in the resultset. Also when adding new row in such case defaults were not displayed in the GRID.
    -- Initialization of the program could be slow if user had very large SQLite databases used by autocomplete.
    -- Vertical scrolling in RESULT Tab or DATA Tab was saving the unsaved changes.

SQLyog 8.61 (September 2010)

  • Features

    -- INFO tab/HTML mode now displays a count of each type of database objects.

  • Bug Fixes

    -- Fixed a crash on Vista+ with ALTER TABLE. It happened due to changing compiler to Visual Studio 2010 in 8.6. The older Visual Studio version used handled this bug in our code without crashing.
    -- Fixed a buffer overrun issue with long column headers that also could cause SQLyog to crash. Also this was a similar issue due to upgrading the build environment in 8.6.
    -- SQL formatter inserted garbage value if query contained '%'.
    -- "Parenthesis'es highlighting" is now disabled inside MySQL-comments. Before an unmatched parenthesis in a comment would cause 'mis-matching' of parenthesis'es in the executable SQL outside comments.
    -- Fixed some incorrect MySQL API calls with HTTP tunneling. This issue was reported internally only.
    -- The RESULT tab in text mode was showing incomplete data with multi-line strings.
    -- Import external data now always uses UPPERCASE for keywords in queries sent to the ODBC-source as some ODBC-sources require this.
    -- Table Data tab was unable to perform custom filter when there was an escape character in the filter text.
    -- SQLyog was hanging while showing filter tooltip with more than 80 charecters in Table Data tab.

SQLyog 8.6 (August 2010)

  • Features

    -- User Management is completely redesigned and rewritten. Now privileges on all levels - as well adding/deleting/renaming users and changing passwords - are managed from the same interface – an expandable tree view. Also GRANT and REVOKE syntax is now used (before the MySQL privileges tables were manipulated directly). Also MySQL ‘anonymous users’ are now fully supported. Now both username and hostname may be left as an empty string. A confirmation popup will appear, though.
    -- Added a ‘custom filter’ option in DATA and RESULT tab GRIDs. With this option, user can filter on any value from any cell.
    -- Added options to filter on ‘%value’ and ‘value%’ in both the ‘Filter’ menus and ‘Custom Filter’ dialogs.
    --     Added a tooltip to the 'filter' icon in DATA and RESULT tabs displaying current filter settings.
    -- CTRL+INS and SHIFT+INS keyboard shortcuts will now copy and paste (like CTRL+C and CTRL+V) in GRIDS.
    -- Added support for “parenthesis’es matching” in the editor TAB as well as the small query editors in 'Notifications Services' and 'Import External Data' wizards. You may find what parenthesis/bracket matches another one by simply positioning the cursor after a bracket. The actual bracket and its match will highlight. Note that this feature will work with any string – whether valid SQL or not. Both plain parenthesis’es, square brackets and curly braces are supported (independently of each others)    .
    -- If “save password” is checked for a connection, then focus in Connection Manager will be on the connection name – else it will be on the password. Before focus was always on password when Connection Manager was opened.
    --     Improved performance by optimizing code when SQLyog was internally performing string comparisons (what it does a lot).

  • Bug Fixes

    -- In text-mode, columns in DATA and RESULT tab would not align properly with non-ASCII characters. We were basically counting bytes – not characters. This is now fixed. But note that alignment issues may still happen in special cases with some non-western scripts in cases where the font itself prints more characters with the width of a single character.
    -- Fixed some bugs when migrating default values from SQL server using Import External Data. Issues were occurring with specific default values and datatypes.
    --     Terminating a job from SJA wizards was not killing the PLINK process used for SSH-tunneled connection.
    -- The dialog for defining ENUM/SET properties only appeared after clicking the 'length' cell from CREATE/ALTER TABLE. Now it pops up as soon as user has selected the ENUM/SET type.
    --     The output in the MESSAGES tab is restructured to make the output more readable when multiple queries are executed.
    --     When opening a ANSI-encoded file with non-ASCII characters the encoding would not be detected correctly, and the content would garble (no issue with UTF8 and (Windows) UTF16-encoded files). This bug was introduced in 8.3.
    -- SQL exports added redundant Unix-linebreaks, what would cause some editors to display an empty line. This bug was introduced in 8.4.
    -- SQLyog could crash when connecting from ‘import external data’ wizard to a source database with a huge number of tables in it.
    -- The Windows Explorer dialog for selecting files to be opened could display garbage characters at the beginning with non-English locales. The reason was SPACE characters incorrectly added by SQLyog.
    --     Fixed a GDI leak occurring when switching between TABS in the GUI (editor TABS or connection TABS).
    -- Fixed a crash that could occur when closing the copy database dialog.
    --     Create Index dialog was not resizing/positioning the grid properly. Sometimes the issue could render the dialog unusable
    -- Other small GUI fixes

  • Miscellaneous

    -- With this build we have changed our build environment from Visual Studio 2003 to 2010.
    --     Windows 2000 is no longer supported.

SQLyog 8.55 (July 2010)

  • Bug Fixes

    -- If user edited data in RESULT-tab GRID and changed display mode from grid-mode to text-mode before saving changes, the UPDATE statement would omit the proper WHERE-clause. As a consequence all rows would be updated. This bug was introduced in 8.4. All users using 8.4 or higher should upgrade due to this serious bug.
    -- Sorting and filtering on YEAR-type columns in RESULT tab did not work. Now it works with YEAR(4), but with YEAR(2) it still does not with this release.
    -- A connection tab/window can now be closed even if there is only one connection.
    -- Fixed an issue with Schema Sync when source and target differed in both columns and Foreign Keys. Sometimes the ALTER script would only specify the FK-changes to target.

SQLyog 8.54 (July 2010)

  • Bug Fixes

    -- With many servers/connections registered in SQLyog the drop-down list in the connections dialog would flicker. The flickering was introduced in 8.5.
    -- Query Formatter was not handling queries of size greater than 2 KB. Now the size is increased to 8 KB. The 2 KB limitation was introduced in 8.18.
    -- Import of data from .xlsx files from Excel 2007+ was failing with double-precision datatypes.
    -- Update-check failed if SQLyog was running behind a HTTP-proxy. The settings will now be detected. However proxies requiring authentication are not handled with this release.

SQLyog 8.53 (July 2010)

  • Bug Fixes

    -- SJA was always using port 22 to connect to SSH, but now any valid SSH port can be used to establish connection with MYSQL server using SSH.
    --     Fixed a PLINK crash which was introduced in SQLyog 8.5    .

SQLyog 8.52 (June 2010)

  • Bug Fixes

    -- Solved an issue with SSH connection when putty is present. PLINK was using the default settings of putty to connect, resulting error in connection (introduced in 8.5).
    --     Solved an issue with SSH connection where SQLyog was reporting Error No. 2003 even if the MySQL port was correct (introduced in 8.5.1).
    --     If MySQL connection used "anonymous user", SJA was throwing an error.
    -- For create/alter database, collation drop-down list did not populate values correctly if TAB key was used to select the charset.
    -- In Scheduled backup if the database name contains Non-ANSI characters, export was failing when 'ALL database' option was selected.
    -- Fixed the way keyboard shortcuts Ctrl+Tab and Ctrl+Shift+Tab behave.

  • Miscellaneous

    -- Selecting a connection from the drop-down list of connection window is now faster.
    --     Keyboard shortcut Ctrl+W now closes the current connection tab. Keyboard shortcut for the Database Synchronization tool has been changed to Ctrl+Alt+W.

SQLyog 8.51 (June 2010)

  • Bug Fixes

    -- The 'Export Table Data As...' option from the object browser menu was exporting just the column headers, this was introduced in 8.5 GA.
    --     In the Notification Services wizard, if the field contained data with quotes, SJA was inserting extra slashes along with the field value.
    --     The 'timeout' for establishing connection using SSH has been increased from 15 seconds to 30 seconds (15 seconds was too less to establish connection with slow SSH servers).

SQLyog 8.5 (June 2010)

  • Features

    -- This version introduces a tabbed interface for connections. Tabs will be colored (if chosen) like the Object Browser. Note that the meaning of shortcuts Ctrl+number have changed: they will now shift between connection tabs. The old Ctrl+number shortcuts have been changed to Ctrl+Shift+number.
    --     In connection manager the color code for a connection is now indicated.
    --     Added an option to 'duplicate row' from DATA tab GRID context menu. Tables with auto_increment columns are handled. Note that handling all other CONSTRAINTs is user's responsibility.
    --     When a GRID operation returns a warning there is now a clickable link for SHOW WARNINGS    . Note: this is not implemented for HTTP-tunneling.
    --     In RESULT tab data can now be filtered client side as already possible in Table Data.
    --     Menu option 'Paste SQL Statement' will format the query as per the SQL Formatter Preferences settings.
    --     Tabs can now be closed with the click of middle mouse button (mouse wheel).
    --     Keyboard shortcut F3 for 'Find Next' in Query Editor and Result/Table Data tab in Text mode.     Note: Not implemented in BLOB-viewer.
    --     Shift+click can be used to select/deselect multiple objects in tree-view control of Copy Database, Export, etc.
    -- Added a menu option to 'Find Next'in 'edit' menu and query editor context menu.
    -- Find/replace settings are now persistent within the session.
    --     Improved the speed of (csv, html, xml, excelxml and sql) - exports from RESULT tab.
    --     Files can now be drag'n'dropped into the program window and file will be opened in a new Query/Schema Designer/Query Buillder tab depending on file type (like 'file .. open' menu). Same is implemented in SJA wizards where a file can be opened.

  • Bug Fixes

    -- It was not possible to enter a value higher than 999,999 for OFFSET and LIMIT in DATA and RESULT tabs. Now up to 15 digits are allowed.
    --     'No Database Selected' error could occur with Data Sync after a reconnect. We are now prefixing table names with database name in Data Sync.
    --     Shortcut for copying 'Ctrl+Insert' was not preserving the letter case    .
    -- Fixed a rare issue where the SQLyog configuration file (SQLyog.ini ) could be corrupted – and even deleted – if multiple program instances using same .ini instance were running simultaneously. Scenarios include the situation where user by mistake (double)clicked the program icon twice.
    -- Autocomplete could fail to select the items from the listbox (popup window) display after typing "." if a '_' (underscore) character was present with list box items. Technically this was an incompability between sorting in SQLite, Scintilla and standard C functions. We have added our own code to handle this. But note that for performance reasons it is not handled perfectly with Ctrl+Space and Ctrl+Enter where it can be necessary to use arrow-keys for selection in such case.
    -- Several small fixes with 'Find Next' in editor and Blob Viewer.
    -- SJA wizards would sometimes fail to specify the correct jobfile path to the Windows Task Scheduler.
    --     The grid control in Manage Index dialog did not resize properly with some monitor resolutions.
    --     The upgrade check dialog popped up on top of other running applications.

  • Miscellaneous

    -- Use of 'compressed protocol' is now default for new connections. Our test tell that the positive effect of using it can be huge when it should be used and the negative effect when using it when it should not, is very small.
    --     Added keyboard shortcut Ctrl+9 for selecting last connection tab.
     -- In RESULT/DATA tab all Copy related options are grouped together.
    --     Selecting this option 'Copy Selected Row(s) to Clipboard' we can now copy the selected row to the clipboard with out checking a row on the grid.
     --     Minimized the number of pop-ups while creating a Table.
    --     The PLINK shipped with SQLyog was updated. This solves rare connection problems with specific SSH configurations. Mostly connections to very recent Linux distributions were affected.
    -- Also the SQLite library within SQLyog has been upgraded to the latest version. The new version of SQLite improves stability as compared to the previous version where a possible journal file corruption was not handled.
    --     If user does not specify a file extension for the jobfile the wizard will add the standard extension '.xml'.
    -- The option in 'preferences' to 'Add keywords in UPPERCASE' is removed. It was redundant since introduction of the 'auto-capitalization' feature.
    -- Dialog fonts are now default system font.
    -- In order to save space Query Builder and Schema Designer tabs will now show the filename without ('.queryxml' and '.schemaxml') extensions.
    -- Installers will now have two numbers after the numbers identifying the version no. (identical to common naming conventions for RPM installers for Linux). This is done in order to ensure that every installer we build has a unique name. Various proxy systems would sometimes cache and provide the old file on download request.

SQLyog 8.4 (April 2010)

  • Features

    -- Dumps created with 'scheduled backup' can now be zipped.
    -- 'Notification Services' can now read queries from an external file.
    --     Added an option to send a mail alert if an error occurs while executing a 'maintenance query' from Notification Services.
    --     In RESULT tab data can now be sorted by clicking on column headers which is already possible in DATA tab. However note the difference as compared to sorting in DATA tab: in DATA tab we will send a SELECT .. ORDER BY .. query to MySQL – in RESULT tab we will sort inside the internal SQLyog data buffer. That means that for strings sorting in RESULT tab does not respect the collation defined for the data. Also all sorting on string values in RESULT tab is currently always case-insensitive (and note: this also applies to binary types: binary, varbinary and BLOB)    .
    --     'copy to clipboard' and 'export to CSV-file' - settings are now independent.
    -- The file menu has been reorganized to comply with standards. Note that to insert from a file into an open editor tab you must now use the context menu item from the editor. Such menu item in the context menu was also added with this release    .
    -- Added menu items (for exports and 'copy to other..') to table-level in Object Browser.
    -- Added an option to find redundant indexes. The control and the information is available from INFO tab/html view. This is an ULTIMATE feature.
    -- Drastically improved the speed of the autocomplete option to show suggestions while typing.
    --     Save dialog now has 'yes to all' and 'no to all' options when closing a connection or the application.

  • Bug Fixes

    -- Schema Optimizer did not handle the auto_increment flag. Underlying reason was that MySQL 'Procedure Analyse()' does not. We now retrieve this information otherwise.
    --     When the database context was changed by user between execution of same SELECT-query by clicking 'refresh' an empty RESULT tab displayed, what was confusing. Also it was possible to crash SQLyog from this empty RESULT tab. Now we print an error in MESSAGES tab in such case and no RESULT tab displays.
    --     Fixed a crash (reported internally) that could happen when sorting on multiple columns in DATA tab. Also an invalid query could be generated under same conditions.
    --     Notifications services would not execute queries after a query returning an error if connection was over a HTTP-tunnel even if user had selected not to abort on error.
    --     Very long strings containing the '_' or the '\' character could cause a buffer overrun when looking up a match in the auto-complete database. Windows would then terminate SQLyog.
    -- Fixed a rare issue where access to a port (to be used for a SSH tunnel) was erroneously blocked by SQLyog before it was reserved. Even SQLyog itself could then not use it and connection would fail.
    -- Selecting from the connections dropdown in connection manager using keyboard was not functional.
    -- The MySQL keywords PROFILE and PROFILES were not considered as keywords by the SQLyog editor and auto-complete.
    -- New row(s) added in GRID in DATA tab did not display when shifting to TEXT-mode. A refresh was necessary.
    -- Result tab now shows new row(s) and edited data in TEXT-mode.
    -- On un-checking 'save password' option in connection window, SQLyog was not deleting password in sqlyog.ini file.
    -- Schema Designer was prompting table out-of sync message if there was a difference in table's AUTO_INCREMENT 'value' or if extra spaces were present between identifiers.
    -- On executing SELECT statements having clauses like PROCEDURE, INTO FILE, FOR UPDATE, etc., SQLyog was adding LIMIT clause if result tab paging option is enabled.
     -- Manage privileges dialog was missing lock table and create_temporary_table privileges for MySQL server version less than 4.1.
    -- Copy database would fail if source server has lost its connection while fetching data because of too small 'net_write_timeout' value. But still copy database dialog was showing 'copy successful'.
    --     GUI fixes.

  • Miscellaneous

    -- In order to indicate table storage engine SQLyog was retrieving the table's information from Information_Schema while expanding database from object-browser. This was slow in some MySQL server versions. Now the query to retreive the engine information will be executed on demand only.
    -- SQLyog now has a common option in Preferences to "Prompt if a tab with unsaved changes is closed". Earlier it was separate for Query Editor, Schema Designer and Query Builder tabs.
    -- In RESULT result tab in edit mode we have restricted adding more than one new row at a time. It conflicted with filtering.

SQLyog 8.32 (March 2010)

  • Bug Fixes

    -- If 'all rows' option for a table was selected in DATA tab this setting had effect when switching to a table that had never been viewed before. Consequently first selecting 'all rows' for a small table and next selecting a huge table could cause system memory exhaustion. This bug was introduced with the table-level row-number persistence in 8.22. Now a table that has never been opened before will be opened first time with the default LIMIT setting.
    --     First time a specific query was executed paging in RESULT tab did not work properly for that query.
    --     If paging was disabled for RESULT tab the 'rows in a range' radiobutton was still selected (but 'greyed out' though).
    -- When printing from Schema Designer blank sheets could be printed if a table object was positioned close to the border of a page.
    -- Fixed (yet another) multimonitor issue.
    -- When a Query Builder tab was closed with an unchanged QB layout, SQLyog prompted if changes should be saved.
    -- If tables named identically except for lettercase existed in same database on a unix/linux server one of those tables would display data for the other table in DATA tab. The wrong table was specified in the query sent to MySQL. This bug was introduced in 8.0    .
    -- Fixed a crash when copying data to clipboard from DATA tab using toolbar icon    .
    --     Improved GUI in 'Import External Data Tool' wizard (explaining limitations with various Microsoft ODBC drivers).
    -- SQLyog connection manager required a user name, what prevented connection as a MySQL 'anonymous user'.
    --     The automatic detection of what local port to use for SSH-tunneling (as introduced in 8.21) could in rare situations detect a port from where connection was not possible.
    --     Schema Sync could generate an invalid USE... LIMIT... statement. This bug was introduced with paging in RESULT tab in 8.3.

SQLyog 8.31 beta1 (March 2010) - also note that 8.31 GA version was never released

  • Features

    -- Dumps created with 'scheduled backup' can now be zipped. Note: there is one limitation with current implementation in this beta: the archive name is restricted to use characters from current ANSI codepage.
    --     'Notifications Services' can now read queries from an external file.
    --     Added an option to send a mail alert if an error occurs while executing a 'maintenance query' from Notifications Services.
    --     In RESULT tab data can now be sorted by clicking on column headers like already possible in DATA tab. However note the difference as compared to sorting in DATA tab: in DATA tab we will send a SELECT .. ORDER BY .. query to MySQL - in RESULT tab we will sort inside the internal SQLyog data buffer. That means that for strings sorting in RESULT tab does not respect the collation defined for the data. Also all sorting on string values in RESULT tab is currently always case-insensitive (and note: this also applies to binary types: binary, varbinary and BLOB).

  • Bug Fixes

    -- If 'all rows' option for a table was selected in DATA tab this setting had effect when switching to a table that had never been viewed before. Consequently first selecting 'all rows' for a small table and next selecting a huge table could cause system memory exhaustion. This bug was introduced with the table-level row-number persistence in 8.22. Now a table that has never been opened before will be opened first time with the default LIMIT setting.
    -- When printing from Schema Designer blank sheets could be printed if a table object was positioned close to the border of a page.
    -- Fixed (yet another) multimonitor issue.

SQLyog 8.3 (March 2010)

  • Features

    -- Added an option to define a 'color code' for a connection. The color will be used as background color in the Object Browser.
    --     A Query Builder session can now be saved and resumed.
    --     Added A context menu to the Query Builder canvas.
    -- In Query Builder a table alias can be defined for any table by double-clicking the title bar of the table symbol.
    --     In RESULT tab results can now be retrieved page-wise. This is ON as default with this build with a defined LIMIT of 1000 rows. For a specific query/resultset user can change and for the specific query the setting is persistent across sessions. Also read 'miscellaneous' below.

  • Bug Fixes

    -- Deleting a user would leave non-global privileges orphaned in the 'mysql' database. Now we use DELETE USER syntax if server supports.
    -- Also using EDIT USER dialogue to change host or user specifier for a user would not move non-global privileges. We have split the old ALTER USER dialogue into two: a EDIT USER and RENAME USER dialogue. The latter will use RENAME USER syntax if server supports.
    -- On Wine Data Sync could generate a malformed XML-string what would case Data Sync to abort.
    -- Fixed an issue where SSH-tunneling failed with public/private key authentication. Technically the fix is in the PLINK binary shipped with SQLyog.
    -- SJA failed to send notification mails if Yahoo SMTP servers were used. Note that the fix disables encryption option with Yahoo SMTP servers – but it won't work anyway due to a non-standard SMTP implementation server-side.
    -- When importing data from a Universe ODBC-source string data could be truncated.
    -- The fix in 8.22 for the issue that horizontal scrollbar in GRID would sometime not appear was not complete. It could still happen.
    --     SQLyog will now trim trailing whitespaces in Connection Manager and Create dialogs to avoid MySQL Errors.
    -- When calling a Stored Procedure with more than one SELECT statement from 'Notifications Services' only one result set was sent by mail.
    -- The sja.log file had no line-breaks between what was recorded for two jobs.
    --     On multi-monitor system resizable dialogues could open on the wrong monitor. New implementation is like this: on multi-monitor systems main program dialogue and 'first child dialogue' (example: ALTER TABLE) will open where they were closed (if possible), second and higher child dialogues (example: table advanced properties) will always open on top of its 'parent' dialogue. Non-resizable dialogues (such as confirmation boxes) will always open on top of their 'parent's.
    --     If more than one comment occurred before a SELECT statement in the editor, the statement was not identified as a SELECT statement by the Query Profiler and the Query Profiler TAB would not display.
    --     With multiple SSH-tunnelled connections open stopping and re-executing queries in multiple connections in a fast manner could crash SQLyog    .
    --     We did not validate client-side if user checked atoincrement option for a bit column with Create/Alter table dialog.
    --     If an error occurred while renaming a trigger then trigger was lost as SQLyog was not recreating it back.
    --     Small GUI fixes.

  • Miscellaneous

    -- The default LIMIT setting for DATA tab has been removed. The setting is not required since we introduced table-level persistence for number of rows displayed. The default for new tables that have not been opened before is 50 – but when user changes the value and next 'refresh'es SQLyog will save the LIMIT for that particular table persistently across sessions. This in combination with page-wise display in RESULT tab results in a more uniform User Interface for DATA and RESULT tabs.

SQLyog 8.22 (January 2010)

  • Bug Fixes

    -- 'Test connection' would succeed even if a non-existing database was specified in the database field. Connection would next fail.
    -- Database name (if any) would erase on clicking OK in error dialog in connection window.
    -- HTML exports could drop the first character of string output.
    -- With multimonitor setup and SQLyog on the right screen some rarely used dialogues would pop up on left screen.
    -- Copy database/table will now display 'connecting to source/target server' while connecting. If establishing connection took more than a few seconds users could have the impression that nothing was happening.
    -- An extra RESULT tab could appear when executing a query. This bug was introduced in 8.2. Professional and Enterprise editions were affected.
    -- In notification wizard sending mail would fail if there was no semicolon after the query and “include original query” option was checked.
    -- With more than 65 536 (2^16) rows displayed in GRID, the GRID scrollbar would expose strange behavior. We were using a scroll control using 16 bit integers internally. New scroll control handles +4 billion rows.
    --     In Wine when displaying very wide tables and result sets (like 500+ columns) the column header could disappear. The underlying reason was that Wine failed to render a gradient as transparent but rendered it as opaque instead.
    -- Horisontal scrollbar in GRID would sometime not appear when executing a query returning a large number of columns if not scrollbar was required for previous query.
    -- With larger than 'normal' DPI setting the BLOB Viewer header would not display properly.
    -- 'Export as SQL-dump' dialogue was redesigned to allow for longer files paths    .

SQLyog 8.21 (January 2010)

  • Features

    -- Now SJA will also send mail alert if job aborted due to MySQL error. Before it was only internal SJA error.
    --     The local port used by SSH-tunneling will now be selected automatically. This will avoid conflicts in case multiple programs use SSH. Also with Data Sync from command-line/scheduler it was possible to use same port for both connections what would effectively sync a server with itself.
    -- Caption for 'Parse' button in Notification Services Wizard was changed to make it clear that it will actually execute the statement(s) entered. There is no way to let the server parse a statement except for executing it.
    --     Connection windows for SSH connections will now list SSH host details in the title bar.
    --     Tooltips for an icon will now list the keyboard shortcut performing same action.
    --     The option to display 'all' versus a 'LIMIT'ed set of rows in DATA tab is now table-specific and saved across sessions (note that – similar to the 'column width persistence' feature - connection parameters are not using for identifying a table; only the database name and the table name are).
    --     Objects in an Object Browser node is now sorted case-insensitive.

  • Bug Fixes

    -- Continuously clicking the 'Calculate' button in Schema Optimizer in a fast manner could crash SQLyog.
    -- The keyword.db file (used by auto-complete and syntax highlighting) is now read only. Various validators for Windows7-compatibility would report that SQLyog wrote to "Program Files" folder at runtime (what it did not).
    -- When copying to clipboard an out of memory error could occur also when there was enough memory.
    -- The table menu will now indicate what storage engine is currently used for the table.
    -- Autocomplete and syntax highlighting did not recognize keywords archive, blackhole, federated, example, maria, pbxt, federatedx, falcon and mrg_myisam.
    -- Notifications Services/'Send Query to Email address' option did not send a mail if an error occurred. Now a mail listing the error will be sent.
    -- We did not validate client-side if user specified a default value for an auto-increment column.
    -- In DATA and RESULT tab the context menu was only working from GRID-cells. Now it also does from GRID headers and 'whitespace' in the tabs    .
    --     Updating a 'TIMESTAMP on update CURRENT_TIMESTAMP' had no effect (the particular column was not listed in the UPDATE-statement sent by SQLyog). This was a necessary restriction before 8.13 but since we – from 8.13 – only list columns that have actually been edited by user, we can now lift this restriction.
    -- Import External Data – TRIGGERS could fail to update a SQL Server (n)varchar if it contained an empty string    .
    -- If user had selected to save SSH-password locally and later changed the password, the new password was not saved - unless clicking 'save' button in connection manager interface.
    -- When importing an external script with no explicit SET NAMES on top, SET NAMES latin1 was executed by SQLyog. Now we won't do this - and server default charset will have effect for the import in such case.
    --     Autocomplete did not handle identifiers with the '_' character correctly what could result in too many matches when matching the database with a patttern in editor containing such character.
    -- Other small GUI fixes.

  • Miscellaneous

    -- The 'Objects' menu was renamed to 'Others's.
    --     This release ships with an updated tunneler file for HTTP-tunneling. In the old tunneler file functions were used that are depreciated in PHP 5.3x.

SQLyog 8.2 (December 2009)

  • Features

    -- Added a 'Schema Optimizer' feature. Based on "procedure analyse()" it will propose alterations to data types for a table based on analysis on what data are stored in the table. The feature is available from INFO tab/HTML mode. Refer to documentation for details.
    --     A table can now be added to Query Builder canvas multiple times. A table alias is automatically generated for second and higher instance of the table. This is required for special queries like self-JOINs (note: table alias support in Query Builder is an ongoing process).
    -- In the 'Import External Data' wizard same import settings can now be applied to all tables in one operation.
    --     In MESSAGES tab we are now displaying the query if error occurs during execution in order to make it easier to identify what query raised an error when executing multiple statements.

  • Bug Fixes

    -- 'Import External Data Tool' -TRIGGERS did not use the Primary Key for the WHERE-clause if a PK existed on source (all columns were used with the WHERE instead). This could cause problems with tables having Floating Point data.
    --     A malformed XML-string could cause failure to connect with HTTP tunneling. This was a rare issue only.
    -- After DROP a 'stored program' followed by CREATE same, Autocomplete would not recognize the 'stored program' unless after a program restart.
    --     'duplicate table' has an option to duplicate triggers defined ON that table, but the way we named the new trigger could cause inconsistencies. Now the new trigger will be named 'oldtriggername_newtablename'.
    --     Autocomplete was not functional with names of Triggers and Events.
    --     In MESSAGES tab font could change if non-ASCII characters were displayed.
    --     ALTER TABLE failed to rename a column when old and new column name only differed by letter-case. Actually the dialogue just shut down.
    --     A calculation error could cause export tools to create BULK INSERT statements larger than specified by user.
    --     Import External Data Tool will now always map any autoincrement type from ODBC sources to a MySQL autoincrement integer. Before this datatypes that could autoincrement on source but not in MySQL (example a SQL Server 'decimal autoincrement') failed to import.
    -- Now Import External Data Tool will convert SQL Server 'GETDATE()' to MySQL 'now()'. Before this an error occurred at import with GETDATE()'s    .
    --     Fixed a Object Browser flickering issue when refreshing.

  • Packaging and licensing

    -- The licensing scheme for SQLyog has changed: there is now the free Community version (unchanged) and 3 different commercial licensing models: Professional, Enterprise and Ultimate.
    -- TRIAL now has ULTIMATE features with the exception that there is a restriction on how many tables and other objects can be handled in a single SJA job (similar to what was previously the case with ENTERPRISE TRIAL).

SQLyog 8.18 (November 2009)

  • Bug Fixes

    -- Schema Sync failed to set the auto-increment flag when syncing a table having this flag to a table not having. This bug was introduced in 8.13.
    -- SMTP authentication and notification could fail with passwords having special characters.
    -- Solved a crash with Query builder while creating VIEWs.
    -- INFO tab/HTML format was showing incorrect value for table's data size having values in Gigabytes.
    --The display of the optimized query from EXPLAIN EXTENDED is now truncated to 2 KB. With long BLOB/TEXT data there will need to be some limit.
    -- Schema Sync will now query Information_Schema for a VIEW definition. MySQL sometimes returns 'databasename.viewname' and not just 'viewname' when using SHOW CREATE .
    -- The fix in 8.15 for the issue that Windows Vista and higher could warn that SQLyog was not properly installed was not complete. It could still happen    .

SQLyog 8.17 (October 2009)

  • Bug Fixes

    -- When connected to a 5.0 server compiled without PROFILING option and with Query Profiler/SHOW PROFILE feature enabled SQLyog would still send PROFILING-related queries. It was not properly detected that the server did not support this. MySQL versions from 5.1 and up (also when compiled without PROFILING option) were not affected
    --     In DATA and RESULT tabs/text mode unicode/non-ASCII characters could cause a change of the font that was used for displaying data. This was an old bug from when introducing full unicode support in 6.0.
    -- In RESULT tab BLOB/TEXT data would sometimes not display beginning of data in GRID. This bug was introduced in 8.15.

  • Miscellaneous:

    -- EXPLAIN EXTENDED option is now disabled as default in Query Profiler.

SQLyog 8.16 (October 2009)

  • Bug Fixes

    -- Exports as Excel-XML was broken in 8.15 . Empty strings and ZERO's occurred instead of data.
    -- 'Search and replace' could truncate the result. Also this bug was introduced in 8.15    .

  • Miscellaneous:

    -- SQLyog Application Manifest was updated to return version information.

SQLyog 8.15 (October 2009)

  • Features

    -- Added an option to execute SHOW WARNINGS automatically if the 'warning-count' is not 0. The output will appear in MESSAGES tab. Note: this is not implemented for HTTP-tunneling.
    --     Improved the memory handling in GRIDS with BLOB/TEXT columns. This fixes some slugginess when scrolling a GRID containing such data.

  • Bug Fixes

    -- A dump containing VIEWs created on an early 5.0-server could fail to restore on recent servers. The underlying reason is a bug with the 'default' column in the output of SHOW FULL FIELDS on the early 5.0 servers. But we can aviod using this information and this is what we did now.
    -- Copy database/table from a 3.x or 4.0 server to a more recent server failed with column names containing special characters.
    -- If a sqlyog.ini files exists in installation folder it should be copied to 'AppData' folder. This is required for upgrading from versions before 6.06. However with latest releases an empty file was created in 'AppData'.
    -- The 'Import External Data Tool' could truncate strings when importing data from a 4D database. It is actually a bug in the 4D ODBC driver but we found a workaround.
    -- SSL-connections failed if authentication keys were created with cipher option.
    -- SQL-exports generated

  • for MERGE and FEDERATED tables.
    -- In INFO-tab/text-mode we will now not highlight 'string literals'. A comment with an odd number of quotes would make following lines display with 'string literal' highlighting/coloring.
    -- When connected with SSH-tuneling to a Windows machine with Cygwin SSHD the bash.exe process created for each connection did not close again    .
    -- CREATE TABLE... advanced options did not set some create-options to 'default'    .
     -- Execution of some queries would be slow with Query profiler/EXPLAIN extended selected. Most important queries with a UNION were affected. Technically it was an issue with the Query Formatter code and how it 'hooked'into the program. This bug was introduced in 8.0.
    -- Windows Vista and higher could warn that SQLyog was not properly installed due to lack of an Application Manifest. It was false alarm but now such Manifest is included with the installer.

  • Miscellaneous:

    -- Functionality change: Before this release we stripped out the database name from Stored Program and View SQL-code when generating SQL-dumps and when copying a database to another host. Also Schema Sync did with VIEWs. This was in order to make it easy to import/copy to another database. However with tables named identical to the database and when database names was a substring of a table name it failed sometimes. We realize now that SQL code inside Stored Programs and Views may be so complex that parsing for the database name and stripping it is not safe. With this release we have stopped this 'stripping' and Stored Programs and Views will be dumped by SQLyog identically to what 'mysqldump' does.

SQLyog 8.14 (August 2009)

  • Bug Fixes

    -- When backing up a VIEW a temporary table was created on <source>. That could fail if user did not have TMP_TABLE privilege or if the table violated server or storage engine restrictions for tables (but note that we still write statements that create and later drop a 'dummy' table when restoring, as this is the only safe way to backup/restore VIEWS defined on VIEWS).
    --    When updating from GRID's SQLyog sends a SHOW CREATE TABLE to ensure that table definition has not changed. But incomplete syntax was used ("SHOW CREATE TABLE `table`" - not "SHOW CREATE TABLE `database`.`table`"). With the new reconnect implementation in 8.13 that could raise the error 'no database selected' after a reconnect.

SQLyog 8.13 (August 2009)

  • Features

    -- SQLyog can be started with a '-dir' switch like "SQLyogENT -dir somefolder". This dir switch specifies where SQLyog will look for the sqlyog.ini file and where all writeable files will be saved. This was implemented for users that want to have all SQLyog-related files on a removable drive or some kind of encrypted storage. Note that if you use the setting in 'preferences' to store TAGS file some specific place the 'preferences' setting will still have effect, also if the -dir switch is used.
    --     Improved/rearranged the GRIDS in Data Sync and Import External Data wizards.
    -- SJA mail functionality now supports SSL/TLS encryption. This applies to SJA for Linux and SJA for Windows running on Windows, but not SJA for Windows running on Wine, as we did not find any way to access encryption functionalities from Wine.
    -- ALTER VIEW will now format the SELECT-part of the VIEW definition.
    -- Now all batch jobs will not generate BULK INSERTS larger than 16MB (like already implemented in Import External Data in 8.11).
    --     In CREATE/ALTER TABLE the charset and collation columns can now be hidden for better overview (most users never use it).
    -- When updating from DATA or RESULT grid the UPDATE statement will now only list columns that were changed. That results in more readable statements and may also improve performance with 'wide' tables and tables with large BLOB/TEXT columns.
    -- As a consequence of the above the restriction, that a grid containing spatial or binary data could not be updated, has been lifted (but such columns themselves still cannot be updated from the grid).
    -- Added an option to perform backups in a single transaction (similar to 'mysqldump' "–single-transaction" option).
    -- The connection manager has been redesigned to allow for longer connection names. Also the '…' button was renamed to 'rename' (what was what it always did).
    -- Added support for MySQL compressed protocol in both SQLyog GUI and SJA.
    -- Added an option for user to specify the timeout setting for the session (note: it will work with MySQL 4.1 and up only as earlier versions do not support SESSION variables).
    -- Now SQLyog logs to the sqlyog.err file if memory allocation fails with string manipulation (for example when handling blob/text data where a single value may be larger than available memory).
    -- Version parameter was added to SJA. You can now execute "sja –-version" or "sja -v" and version will be returned. Before only the file size could be used to detect the SJA version.
    -- Now full GUI support for all charsets added to MySQL after 5.1. Everywhere SQLyog presents user for a list of available charsets and collations the server will be queried about this information. Before it was not like that everywhere!
    -- If the custom size for bulk insert in 'preferences' is greater than server default, then SQLyog will use the server default for generating BULK INSERT statements. Users overlooked/forgot that they had specified a setting. As a result backups that would not restore on same server could occur. Also now user specification is restricted to 5 digits (what means it will have be less than 100 MB).
    -- The various options available for backups have been reorganized in GUI to make it more clear what options have effect on the source server while backup job is running and what options are options that are written to the file.
    -- A new query tab can now be opened by double-clicking in the unused space to the right of existing open tabs.

  • Bug Fixes

    -- Edit menu showed F5 for both Refresh and Execute Query.
    --     Autocapitalisation settings had effect where they should not. It has now been disabled in MESSAGES tab and in the error dialogue.
    -- Various places a horizontal scrollbar displayed where it was not required.
    -- Fixed wrong behavior with GRID scrollbar after resize.
    -- ALTER TABLE dialogue executed SHOW TABLE STATUS with no LIKE-clause. That could be slow with a large number of big InnoDB tables in a database.
    --     PROFILER tab sometimes did not show after executing multiple queries.
    -- After doing FILTER in DATA tab, LIMIT would be reset to previous value    .
    --     Non-column results (like functions, expressions etc.) were affected by column-width persistence feature what they should not (it had weird effects sometimes)    .
    --     A 'duplicate key' error would occur with batch jobs (including Data Sync) if an autoincrement column had a '0' value. We now set 'NO_AUTO_VALUE_ON_ZERO' sql_mode for batch jobs.
    -- On Wine F8 keyboard shortcut was only functional after executing a query.
    -- When copy database/table from a MySQL server 5.1 or higher to a 3.x or 4.0 server timestamps with ON UPDATE-clause caused a syntax error as ON UPDATE is not valid on such target. There was no issue when source was 5.0 as we transform the CREATE statement. But the condition had a bug so it did not work with 5.1+ .
    --     It was not possible to enter an empty string in the GUI for ENUM/SET management.
    --     When queries were inserted from 'edit .. Paste SQL statements' menu the tokenizer editor component could fail to identify exactly where a statement started and stopped. Reason was that the tokenizer expects Windows linebreaks (\r\n) but templates contained Unix linebreaks (\n):
    -- SQLyog could fail to save properly from RESULT tab if PK-column(s) were not displayed in GRID (an incorrect WHERE-clause was generated). This bug was introduced in 8.1.
    -- Data Sync could throw an incorrect 'AUTO INCREMENT definition mismatch' error for data types (like TIMESTAMP type) where auto-increment does not apply with specific schemas. Also this bug affected Schema Sync.
    -- Fixed a crash in Scheduled Backup    .
    -- Emptying a database rendered Autocomplete non-functional for the session.     .
    --     A scheduled SJA job raised an internal error code in the Windows scheduler. It had no effect on the job as such (queries were executed, mails were sent), but various monitoring tools for Windows servers would raise an alert.
    -- Fixed an issue with Schema Sync if the same 'stored program' was formatted differently on source and target. Target was not always synced properly and SS would detect differences forever.
    -- On Wine Data Sync could pop up a message that SJA had crashed. But actually it only crashed after user clicked OK in the dialogue.
    --     If user did not have SELECT privilege to the `mysql`.`proc` table ALTER STORED PROCEDURE/FUNCTION failed silently. Actually nothing happened. Now we return an error.
    -- 'reorder columns' threw away '' (empty string) DEFAULTs for string columns.
    --     When data were changed in GRIDs and the GRID-curser was moved to another row of the GRID by right-clicking in a cell of another row of the GRID, no UPDATE statement was sent (left-click and arrow-down key worked as expected).
    -- With low wait_timeout setting on <target> it could happen that Data Sync took more time than this setting to prepare a BULK INSERT statement. Connection to <target> would be lost and sync not completed. We now SET wait_timeout = 28800 in Data Sync. Also 'restore from SQL dump' will now do the same.
    --     Mails sent by SJA could truncate a HTML tag for background color. 'white' would become 'hite'. The display with specific email clients was unpredictable.
    -- When data sync used the option to generate a sync script the sja.log displayed ZERO's for inserted, updated and deleted rows. Now the log will display what was written to the script instead.
    -- When a routine body contained empty lines, Schema Sync would sometimes not sync such empty lines properly. Schema Sync would then detect differences forever.
    -- In INFO tab/HTML View empty lines in a routine body could be 'stripped out'.
    --     'copy database' failed to copy triggers when selecting only triggers for copy'.
    --     In various error dialogues we will now truncate query strings to 2 KB. Before there was no limit'.
    --     SSH-tunneling failed with the "FreeSSHD" SSH-implementaton for Windows.

  • Miscellaneous

    -- SQLyog reconnects are now coded differently (now the MySQL API reconnect option is used - before it was our own code). The new code means that with SSH-tunnel it will now not be necessary to re-instantiate PLINK (the running PLINK instance will be used). As a consequence SQLyog will now not log to HISTORY when SQLyog reconnected in most situations. However a PLINK<->SSHD reconnect will still be logged always.

SQLyog 8.12 (June 2009)

  • Bug Fixes

    -- Backups did not `backquote` identifiers inside the columns-list of an INSERT statement (ie. “INSERT .. (col1, col2) VALUES ..” instead of “INSERT .. (`col1`, `col2`) VALUES..”). If specific (but not all) keywords were used for naming a column, backups would not restore. This bug was introduced in 8.1.
    --     A sync script generated with Data Sync had INSERT statements duplicated. Also this bug was introduced in 8.1.
    --     Fixed a painting issue when switching between DATA tab and RESULT tab.

SQLyog 8.11 (June 2009)

  • Bug Fixes

    -- A memory corruption could occur when saving a file using 'save as' ('save' was not affected) from the editor. Various issues like painting issues and even a crash could then occur.
    --     Scrolling with mouse scroll-button was not functional in the new GUI for SET/ENUM management.
    -- 'duplicate table' did not duplicate all 'table options' defined for a table - like MAX_ROWS etc. (Also note that Foreign Key CONSTRAINTS are not duplicated either, but that is intentional and not a bug)    .
    --     Bulk INSERTS generated by Import External Data Tool will now be restricted to 16 MB in size if max_allowed_packet in server configuration is larger than 16 MB. On specific systems/configurations memory issues were reported.

SQLyog 8.1 (June 2009)

  • Features

    -- Added an option to import text/.csv, .xls (Excel) and .mdb (Access) files without using a preconfigured DSN setting (user only need to specify the file and ODBC driver details are passed transparently for user). When using this option also detailed column mapping is possible.
    --     Added an option to 'preview SQL' in CREATE/ALTER TABLE.
    -- OBJECTS tab was renamed to INFO tab. There is now a choice between the (old) text-based display and a new tabular/HTML-based view    .
    -- The SELECT-part of a CREATE VIEW statement in INFO tab will now be formatted. Also the 'SQL-preview' in CREATE/ALTER TABLE dialogue will now be formatted.
    -- New GUI for defining ENUM and SET columns in Create/Alter table.
    --     Autocomplete had a complete 'overhaul' resulting in better performance.
    --     Column width in all GRIDs (not only DATA and RESULT tabs) are now persistent    .
    --     The caption 'Migration Toolkit' was changed to 'Import External Data' in menus etc.
    --     The session.xml file (used by SJA internally) is now not exposed to users in Wizards. The file is created in user's 'AppData' folder when job is invoked from a Wizard. If invoked from command-line files will be created in the folder where the SJA executable is, if not specified differently from command line. The reason for this change is that the two XML files (jobfile and sessionfile) have frequently been confused by users.
    --     Drastically improved the speed of exports (typically 3-4 times faster) by changing the buffering concpet used internally. This refer to exports as CSV, XML ,HTML, Excel XML and all SQL export/backup options.
    --     The changed buffering concept as described above also was applied to Data Sync. Additionally this release comes with query optimisations of queries used by Data Sync. Fewer queries are needed. As a combined result Data Sync is now much faster than before in particular with remote servers (up to 2-3 times with normal DSL connections).
    -- Added 'scheduled backup' option to Object Browser context menu.
    -- Some reorganisations of menus, improved captions and explanations in dialogues and wizards etc.

  • Bug Fixes

    -- Query Profiler would sometimes fail to display the total time in SHOW PROFILE.
    --     Fixed a painting issue in Schema Designer.
    -- Fixed a program crash in copy database/table.
    -- On Win2K and Wine icons will now be 8 bit color depth, as those environments do not support 32 bit color depth icons properly.
    -- Autocomplete would sometimes erroneously insert a linebreak    .
    --     Query Builder could generate SQL with an ambiguous column (not prefixing column name with tablename for a PK-column) if the same column name existed in joined tables. This bug was introduced in 8.03.
    -- When connected to MySQL before 4.1 a string containing special (non-ASCII) characters could be identified as a binary string. Also this bug was introduced in 8.03    .
    --     Autocomplete was not functional within the argument-list of a function.
    -- 'empty database' (from the database menu/context menu) caused Autocomplete to become non-functional for the session    .
    -- Scheduled backup did not handle the “&” character in file and folder names    .
    --     Removed redundant SPACES in CREATE statements. These SPACES could cause formatting to garble when copying (to a web form for instance).
    --     If a file named 'sja' or 'sja.exe' existed in SQLyog 'AppData' folder SJA failed to connect with SSH tunnel. A user reported that such 'shadow copy' was created periodically. Issue is not fully understood (except that Windows looked for PLINK too in 'AppData') but the fix works!
    --     Fixed a scrolling issue in Data Sync GRID.
    --     The templates for ALTER ('stored programs and VIEWS) will now have a "USE db_name" on top. Before the statement could be executed against the wrong database if user changed the database context.
    -- Lots of fixes for small (mostly GUI-related) issues reported internally.

SQLyog 8.05 (April 2009)

  • Features

    -- User Management icon was re-introduced in the Icon Bar.
    --     In DATA and RESULT tab you can now open the BLOB VIEWER for BLOB and TEXT types with any keyboard keystroke (like SPACEBAR). The 'NOT NULL' checkbox will then automatically uncheck (if checked) and BLOB VIEWER window is ready for input from the keyboard without any mouse action.

  • Bug Fixes

    -- SQLyog could crash when retrieving binary data over a HTTP-connection.
    --     Fixed a crash when updating from the RESULT tab (details: a pointer used internally could contain an invalid value).
    -- When multiple reconnects took place in 'copy database/table' with short intervals various issues could occur - including a program crash    .
    -- When Schema Sync CREATED a table having a string column with default ” (empty string) the default was not created for that column (it was no problem if the table on <target> existed in advance and was ALTERED)    .
    -- On MySQL 4.1 and 5.0 SHOW FULL FIELDS does not expose an ON UPDATE CURRENT_TIMESTAMP clause for a TIMESTAMP column . We will now get this information from SHOW CREATE TABLE . The most serious problem before this was that when syncing from 4.1/5.0 to 5.1/6.0 an ON UPDATE CURRENT_TIMESTAMP clause could erroneously be dropped on target.    .
    --     Also this release contains a large number of GUI-releated fixes including fixes for painting issues and Object Browser issues related fixes. Also the Object Browser fixes in 8.04 introduced new issues that were now also fixed.

SQLyog 8.04 (March 2009)

  • Features

    -- Crash dumps with no information (zero-size) will now be deleted automatically.
    --     When saving/copying from the editor the LETTERCASE modifications for keywords and functions will now be preserved.
    --     Selecting a 'child' object for a table (columns and indexes) will now refresh the DATA tab if DATA tab is open. Before only selecting the table object itself did. Also the table information is now available in OBJECTS tab when a column or index is selected.
    --     Now also a 'key' icon is used for identifying the Primary Key in an Object Browser 'Indexes' folder.
    --    When a GRID cell is only partly visible, doubleclicking it will move the grid position so that cell/row will become visible (before it worked like that with singleclick - we changed to doubleclick as this is a de facto standard in such grids - in Excel for instance).
    --The copy database/table dialogue will now display detailed information about number of objects copied    .
    --     In 'empty database' added a 'SELECT ALL' option in order to avoid multiple confirmation popups.

  • Bug Fixes

    -- An index defined on more than one column displayed as many time in the Object Browser as the number of columns used for defining the index.
    --     Fixed scrolling issues with the GRIDs.
    -- The GRID of CREATE/ALTER TABLE dialogue required double-click in a cell before pasting into that cell was possible    .
    --     Query Builder 'copy query to same query tab' was broken.
    --     Query Formatter would insert Unix linebreaks (\n) instead of windows linebreaks (\r\n) between multiple queries what in turn could result in that the tokenizer/editor would would fail to recognize exactly where a statement started and ended.
    -- In the Schema Sync dialogue the 'compare' button could grey out. This bug was introduced with the 'refresh' option added in 8.03    .
    --     The 'include column names' option in CSV-export dialogue (including 'save to clipboard') was not persistent.
    --     Fixed some flickering and repainting issues in Schema Designer in particular as well as other similar small issues elsewhere in the program.
    --     A floating point value displayed in the form ".1234" (no ZERO before the decimal sign) would be exported as integer "1234" with "export as Excel XML". Also NULL values for numerical types could result in a XML file that Excel would not open.
    --     Adding/dropping an index would collapse the 'columns' folder for the table in Object Browser and vice versa.
    --     F6 keyboard shortcut was disabled if focus was on a 'columns' folder in Object Browser.
    --     When using "copy database" and an error occurred while copying a 'stored program' the copy proces would not abort on error. Instead next object was copied or attempted copied. This has been changed so that behaviour with 'stored programs' is the same as with tables.
    -- When clicking the database dropdown in the connection manager of SJA wizards the mouse pointer did not change to an 'wait state' pointer while list of databases was fetched from the server, what could give user an impression of SQLyog 'hanging'    .
    --     Progress bar improvement with “Export as SQL dump” and “Restore from SQL dump”. Also progress information with files larger than 4 GB displayed wrong due to 32 bit integer overflow. Now a 64 bit integer is used.
    --     Lots of small fixes reported internally and by users.

  • Functionality changed

    -- We will now not UPDATE a row of data from DATA or RESULT tab if any of the columns displayed for the actual row contains data identified as binary data by containing a NULL byte ('\0' in C-notation) no matter whether this occurs for binary, varbinary, char or varchar types. Instead an error message will print (reason for this: the UPDATE operation would store what was displayed - not the underlying binary data causing the display).
    -- The arrow icons displaying in column headers of the DATA grid indicating sorting state have been replaced/reverted to conform with de-facto standards.

SQLyog 8.03 (March 2009)

  • Features

    -- New major feature: column width persistence in GRIDs. Once you have defined a column width for a combination of database/table/column the defined column width will always be used. Note that connection details are not used for identifying columns with this new functionality so with replicated and identically named synchronized databases it is sufficient to define in one place. Alias'ed columns in results are handled by the column name and not the alias. Non-column results (like constants, results of expressions/functions, returns of SHOW etc.) are not supported currently. The feature can be turned on/off. Note that if both this new option and the old "Truncate column headers … " is checked in program 'preferences' the "Truncate..." option will be 'overriden' by the new column width persistence feature.
    --     Resizing columns in GRID was made easier. A 'zone' around the column splitter and not only the splitter line itself will now accept the mouse event.
    --     'Find' dialogue will now remember last used values.
    --     Added an option to open a file in a new tab (Editor tab and Schema Designer tab).
    --     Added an option to use 'hard SPACES' for tabulation in the editor (with this checked the code will display identically when copied to other programs).
    --     In editor you can now start typing a query in any position and <ENTER> will position cursor in same position of the next line.
    --     Added 'view data' option to the context menu of a VIEW.
    -- In Query Builder PK-columns are now marked with a (beginning) '*'.
    --     In Object Browser introduced a new 'key' icon for PK-columns.
    -- 'Find' was implemented in BLOB viewer. Currently there is only the Ctrl+F shortcut to do this and no other GUI option (no button or whatever).
    -- In Schema Sync added a 'refresh' option in the dropdowns for <source> and <target> databases.
    -- The program dialogues for SHOW variables/processlist/status, SHOW warnings with CSV-import and Table Advanced Properties are now resizable.

  • Bug Fixes

    -- Fixed an issue where SQLyog failed to SET NAMES when reconnecting.
    --     Exporting floating point data as Excel XML could truncate data.
    --     Quite a lot of fixes for (mostly cosmetical) GUI issues.
    --     Fixed some 'flickering' issues.
    --     Double clicking in the GRID could cause the GRID position to move.
    --     Fixed a bug with detection of encoded strings stored in BLOBs (This was introduced in 8.0 - and it is still recommended to use TEXT types for encoded strings).

  • Miscellaneous

    -- For 16×16 icons we now use the icons from before 8.0. The new icons had too many details for this resolution. Also now users that prefer the old icons can have them!
    -- A restriction on the file size to be loaded into the editor (introduced in 7.12) was enlarged from 2 MB to 20 MB. A warning will now print if size is exceeded (but also note that there is no such restriction when importing external files (from tools .. restore ..)).

SQLyog 8.02 (February 2009)

  • Features

    -- Both SQLyog and SJA will now detect if Base64 encoding is required for HTTP-tunnel.

  • Bug Fixes

    -- Importing external scripts with a large number of DDL-statements was slow with Auto Complete turned on (due to redundant updations of the Auto Complete database).
    --     Deseleting a single object (like a single table) in the export dialogue also deselected all objects in other categories (like all non-table objects).

  • Funtionality changed

    -- CHUNK setting (for exports) now also has effect for non-HTTP-tunneled connections. Using this option is required if it takes more time to retrieve data from a table than server 'net_write_timeout' setting.
    --     SQLyog will now not reconnect if connection is lost during imports. Instead an error message will prompt (the reason for this is that session variables defined on top of the script would be reset to server defaults with reconnection. As a result (and most important) special characters could garble and other errors could occur as well).
    -- When trying to INSERT or UPDATE spatial data types from the DATA/RESULT tab SQLyog will now throw an error. Spatial data must be handled from the editor (but a result set from a table with spatial columns can be updated from RESULT tab if there are no spatial columns in the result).

SQLyog 8.01 (February 2009)

  • Bug Fixes

    -- Query profiler could fail to fetch the result of SHOW PROFILE for (text-wise) long queries.

SQLyog 8.0 (February 2009)

  • Features

    -- New major feature: Query Formatter. Any SELECT, UPDATE, INSERT or DELETE statement can be formatted with a single click. Various formatting options/styles are available in 'preferences'.
    -- New major feature: Query Profiler. With this feature enabled every SELECT statement will trigger execution of EXPLAIN (EXTENDED) and SHOW PROFILE (if supported by server) for the query and will detect changed SESSION STATUS VARIABLES (with some additional explanation of the meaning of those) due to execution of the query. Additionally specific     GLOBAL STATUS VARIABLES will display. The feature is highly configurable. The information will display in an 'Profiler' tab opening in the DATA/RESULT area. With this new feature there is no longer an excuse not to profile queries continously in the application development process - simply because whether you do it or not the effort will be practically the same! Refer to documentation for full details.
    -- New improved icon theme with larger icons. The old icon theme originated back from a time where monitor resolutions were lower than what is mostly the case today. Also added an option to for user to select various icon sizes in the icon toolbar.
    --     The 'info-line' displaying at the bottom of DATA, RESULT and PROFILER tabs can now be turned on/off as defined by user.
    -- Added an option to force LETTERCASE (Uppercase/Lowercase) for display of keywords and functions in the editor. Note that only the display in editor is affected. When copying or saving, the LETTERCASE will copied be as it was entered.
    -- A VIEW can now be generated directly from the Query Builder.
    --     Column width's defined by user in Data GRID will now be preserved when refreshing, filtering, sorting and using previous/next buttons.
    -- Some minor GUI usability improvements and fixes in Data GRID and in Object Browser.

  • Functionality changed

    -- The SQL_WHERE option in Data Sync is changed so that WHERE-condition is evaluated against <source> only (before it was both <source> and <target> (logically OR'ed)).

  • Bug Fixes

    -- If BLOB-viewer was closed by clicking the upper-left corner 'x' symbol, changes were lost without warning.
    -- A SQL script with a user´defined DELIMITER using semicolon failed in editor as well as when importing an external script. Most important "DELIMITER ;;" (double semicolon) did not work - but other DELIMITER strings using semicolon (like triple semicolon etc.) did not either (however note that with HTTP tunneling and when importing external files this is not yet completed)    .
    --     Fixed an issue where Blob viewer was showing garbled characters for UTF8 (but in GRID text appeared properly). This was an issue with a WIN32 API function not returning a proper utf8 string. We do not use that function any more, but use our own code instead.
    --     Fixed a crash while cancelling Migration operation    .

  • Miscellaneous

    -- The ENTERPRISE uninstaller will now remove registration info from the system. This is a request by users who misspelled the registration name or by mistake registered to themselves as a person and not to their company/organization. Note that as a consequence you now should have your registration details available if you uninstall and reinstall!

SQLyog 7.15 (January 2009)

  • Features

    -- Added an option to use Base64 encoding for communicating XML data stream with the HTTP tunneler. Using this option can be required to work around this XML-related bug in PHP: http://bugs.php.net/bug.php?id=45996
    -- Improved editor performance with large scripts if Wordwrap was enabled.

  • Bug Fixes

    -- On Windows Vista Business edition, SQLyog could crash while closing down. No other Windows OS (and also not any other Vista edition) was affected.
    --     Also a 'hang' could occur when closing down. It could happen with all systems, but Windows Vista was mostly affected.
    --     Schema Sync failed with identically named Foreign Key CONSTRAINTs on identically named colums of basically same type (that could still differ in LENGTH, SIGNED/UNSIGNED specification etc.).

  • Miscellaneous

    -- When a PK is built on a string column using a case insensitive collation, SJA could try to insert a row where the PK was identical to an existing one as compared "COLLATION-wise" (ie. when only LETTERCASE differed). That would result in 'duplicate key' error and the sync job would abort. We have now reverted back to case insensitive camparison with string-based PK's as before 7.0, but (to avoid data loss/overwriting) we will abort sync of tables when a string-based PK uses a binary or case sensitive collation.

SQLyog 7.14 (December 2008)

  • Bug Fixes

    -- Schema Sync did not distinguish "default NULL" and "default '' (empty string)" for string types.
    --     When multiple connections were open in one program instance and one connection was in wait-state (for instance due to a TABLE LOCK), the whole program could become non-responding.
    -- If a server thread running a query sent by SQLyog was killed, SQLyog would not always detect it. The connection window associated with that thread would then stay in wait-state forever. Due to the 'multiple connections issue' as described just above also the whole program could be affected.
    -- With MySQL servers 4.0 and before and when connecting with HTTP-tunnel, SQLyog could send an invalid SET SQL_MODE statement when copying large amounts of data. The copy operation would then abort. This bug was introduced in 7.12.
    -- Reconnecting while populating Object Browser could crash SQLyog.
    -- Fixed 2 rare crashes in Schema Sync and DATA tab (reported internally).
    --     Fixed a bug with 'replace' in editor. 'replace' took effect *after* cursor position not *from* cursor position, so if cursor was positioned inside the string to be replaced that particular instance would not replace.
    --     Refreshing the GRID moved the cursor to 'home' position.
    --     Fixed a bug in Autocomplete transaction handling (introduced in 7.13) that could cause a crash at startup.
    --     Migration Tool could fail to find rows when migrating from SQL server 2008.

SQLyog 7.13 (November 2008)

  • Bug Fixes

    -- Fixed a rare crash in Schema Sync. This issue was discovered when testing internally. No user had reported this.
    --     Management of column-level privileges was not functional.
    --     It was only possible to select a single group of objects in GRIDS with the shift+click modifier.

  • Miscellaneous

    -- Autocomplete now uses secure atomic transactions when writing to SQLite databases ('Tags files'). We had a few reports of random program crashes that could be traced down to corrupt SQLite databases. This corruption will now not happen any more.

SQLyog 7.12 (October 2008)

  • Features

    -- This release improves the handling of Foreign Keys with HTTP-tunneling. In Data Sync, Migration, 'copy to other', 'empty database' and 'truncate database' statements are now processed in batches and "SET FOREIGN_KEY_CHECKS = 0" statement (if selected by user) will be reinstantiated for every batch. This is a 100% solution to problems with FK's normally occuring with PHP applications/connections due to the non-persistent nature of PHP<>MySQL connections.
    -- In preferences added an option to 'force disable FK check throughout HTTP import batch process'. Selecting this will have same effect as above when importing external files with SQLyog (from tools .. restore from SQL-dump) over an HTTP-connection. It is selected as default.

  • Bug Fixes

    -- On Wine selecting individual objects (like a single table) for export/copy could export/copy all. This was yet another issue with the tree-view control in Wine.
    --     Autocomplete with table alias failed if "FROM" in FROM-clause was written UPPERCASE.
    -- It was not possible to create the Primary Key on <target> with the Migration tool if using option to import using a user-specified query.
    -- Dropping a table ON which a TRIGGER was defined did not refresh the TRIGGERs folder for the database in the Object Browser. Also 'reorder columns' did not automatically refresh the COLUMNs folder for a table.
    -- The display in Object Browser could garble if program was minimized/maximized while a query was running.
    -- Right-clicking a only partially visible cell in DATA/RESULT tab would not select properly    .
    --     The CREATE USER privilege (introduced in MySQL 5.03) was not handled by SQLyog user management.
    --     Fixed a painting issue in 'manage privileges' dialogue introduced with resizability in 7.11.
    --     Fixed an issue with the CSV import dialogue that could result in a 'hang' or 'crash.
    --     When nothing was selected for SQL export an empty file was generated. Now an error pops up.
    --     Fixed a crash in data sync. This issue affected only empty tables (or empty WHERE results) without a PK.
    --    CSV-export escaped wrong inside enclosed/quoted strings. Only the enclose character itself should be escaped, but also field seperator character and linebreaks were.

SQLyog 7.11 (September 2008)

  • Bug Fixes

    -- Pressing Crtl+end in GRID did not show the last row. This bug was introduced in 7.1.
    --     Fixed a flickering issue in Data tab. It was a threading issue related to the STOP button introduced in 7.1.
    --     When executing a query not returning a result set focus would leave editor (unless the 'keep focus on editor' option was set). This made no sense. Now focus will be kept on editor if there is no result set.
    --     Data sync could fail with column names containg a SPACE character and if specific keywords was used for column names.

SQLyog 7.1 (September 2008)

  • Features

    -- Added keyboard shortcut (F6) for Edit Index.
    -- The behaviour of Ctrl+R shortcut was slightly changed. It will now position cursor inside the active tab in Result pane. Before it was functional only with DATA tab and RESULT tabs.
    --     Added tab-navigation (for query tabs) entries in Edit-menu. Also the active Query tab can now be closed from menu.
    --     In certain situations Schema Sync would generate CHANGE-clauses for a column that basically did nothing (changing column to what it was). This is now 'cleaned up'.
    -- A tab in the Query pane (a Query tab, a Schema Designer tab and a Query Builder tab) can now be closed with Alt+L keyboard shortcut     and can now be navigated with Ctrl+pgup and Ctrl+pgdn keyboard shortcuts.
    --     Favorites are now displayed using Scintilla editor component. For statements with complex formatting this makes the preview more readable.
    -- Autocomplete now supports alias in UPDATE and DELETE statements.
    -- BLOB viewer and the program dialogues for schema sync, create/alter table, manage indexes (including sub-dialogues) manage foreign keys (including sub-dialogues) and manage privileges are now resizable. From now resizable dialogues have a 'gripper' icon in right bottom corner.
    -- Added a movable 'splitter' between the object area and the script area in schema sync dialogue.
    -- Preferences dialogue was redesigned.
    -- Added an option in Preferences to 'Automatically refresh DATA tab on focus'. This was the program behavior before 7.0. In 7.0 to 7.02 it was not. Now it is optional.
    --     Shift+click is now functional for multiple selection everywhere in GRIDS (before it was only in Result/Table Data tabs).
    -- 'show in text' (Ctrl+L) is now functional for both DATA tab and RESULT tab. Also 'Find' (Ctrl+F) now works with DATA tab in text mode    .
    --     Stop option implemented in data tab. This is in particular useful if accidentially the 'show all' option was selected for a huge table.
    -- Added an icon in data tab tool bar indicating if current display is filtered. Also from this icon 'reset filter' can be applied directly.
    -- Added option in Schema Sync to compare all objects or compare only tables.
    -- Now the result tab displays the query as a ribbon at the bottom. This is useful where more queries are executed from the same editor tab.
    -- Refresh option included for show variables, show processlist and show status.
    -- Changed functionality for shortcut F3; now it pops up 'Find' dialog (before it was for keyboard shortcut dialog - F12 is used for this now)    .
    --     The sync script generated by Schema Sync could fail when a change in columns used for Foreign Key(s) or a change with the Foreign Key itself was attempted.
    --     The display of execution time etc. for queries (in MESSAGES tab, HISTORY tab and statur bar) was reogranised for better clarity.

  • Bug Fixes

    -- The GRID would truncate the display of strings longer than 511 characters.
    -- When a user-defined DELIMITER and a comment occurred close to another in the program     editor, the editor tokenizer component could fail to identify exactly where a statement began and ended.
    -- Data Sync could fail with a table having no Primary Key, but more Unique Keys, if the same column was used for defining more than one of the Unique Keys of the table. This was introduced with the new Data Sync code of 7.0 (before 7.0 Unique Keys were not used by Data Sync at all - only Primary Keys were)    .
    --     Fixed an escaping bug in Data Sync.
    -- Fixed an issue with WHERE clause in Data Sync.
    -- Proxy authentication details were not written correctly to jobfile by SJA wizards.
    -- Since 7.0 the WHERE clause defined by user in migration wizard was not written to jobfile.
    -- In Wine Schema Sync could generate an erroneous sync script (specific functions on Wine functioned slightly different than the original Win32 API).
    -- Fixed a number of GUI related issues.

SQLyog 7.02 (August 2008)

  • Bug Fixes

    -- If a reconnect took place shortly after 'Compare' button in Schema Sync was clicked, the 'MySQL server has gone away' error could occur (Details: Data from a not updated internal buffer was used - in reality it was before the reconnect that the server 'went away'!).

  • Miscellaneous

    -- Reconnects are now written to HISTORY (as a comment).

SQLyog 7.01 (July 2008)

  • Bug Fixes

    -- When SQLyog tried to reconnect while exporting a crash could occur. This bug was introduced in 7.0 with the speed optimization of the export dialogue.

SQLyog 7.0 (July 2008)

  • Features

    -- New GRID design ('zebra' Office 2007 style) for easier navigation.
    -- Multiple selections in GRIDs with SHIFT+CLICK.
    -- Improved Data Synchronization. Now typically 2-8 times faster than before depending on data. Option to generate a SQL sync script was added.    .
    --     Drastically improved the speed of exports.
    -- New more user friendly design for the Schema Synchronization (renamed from Structure Synchronization). Various filter ('hide and ignore') options were added. Also a long-running Schema Sync compare task can now be stopped.
    -- Added automatic and manual update check.

  • Bug Fixes

    -- A backup script backing up all databases could fail to restore VIEWs referencing another database than the one where the VIEW was.
    --     Fixed an issue in reordering of tables in Schema Synchronization.
    --     Around 50 other small (mostly GUI-related) fixes for issues reported by users.

SQLyog 6.56 (May 2008)

  • Bug Fixes

    -- Structure Sync could miss the concluding quote around column comments. This bug was introduced in 6.5.
    --     Migration from SQL Server could fail with empty tables.
    -- Migration (UPDATE and DELETE) triggers could fail with specific schemas on source (affected were small tables with short column types only - like integers and very short string types). This bug was introduced early in 6.x the full Unicode support added here.
     -- Migration could generate non-matching columns-count with specific schemas. This was also introduced early in 6.x
    --     Message about "Successful rows" could display twice in Migration (sja.log). Note: This was a cosmetical issue with the message only. Rows were only migrated once!

SQLyog 6.55 (May 2008)

  • Bug Fixes

    -- With specific export settings. CSV-export could add an erroneous NULL byte (hexadecimal 00) before the field seperator (if no escape character was specifed and if string data contained the chosen seperator character).
    --     With specific content of an editor tab, SQLyog could enter an infinite loop and become irresponsible. It was a bug in the code for column alias'es with Autocomplete introduced in 6.52.
    -- When SQLyog was closed from a secondary monitor and started again when secondary monitor was not attached, SQLyog program window would not open on the primary monitor    .
    -- With specific Multimonitor configuration context menu of the Processlist dialogue would open on primary monitor also when program was running on secondary monitor    .
    --     After stopping a running query SQLyog could fail to initialize sql_mode for the new connection created.

SQLyog 6.54 (April 2008)

  • Bug Fixes

    -- When executing Structure Sync between a 5.1.x server and an earlier version, Structure Sync could try to access a non-existing Information_Schema.Events table, what returned an error (it depended on the exact 5.1 version).

SQLyog 6.53 (April 2008)

  • Bug Fixes

    -- When defining parameters for export, database selection had no effect if the database was selected after the output file was specified. This bug was introduced in 6.5.
    -- SQL-dumps created with SQLyog 'export' and 'scheduled backup' did not specify default charset and collation in CREATE DATABASE statement when dumping from MySQL versions where it applies (MySQL >= 4.1).
    -- The size of the SQLyog program window would grow a little everytime it was opened. This is due to a change introduced in 6.5. This has been reverted    .
    -- The various fixes for BIGINT PK's in Data Sync in the 6.1x tree had slowed down data sync with BIGINT PK's    .
    -- Alias support in Auto-Complete could fail if there were comments close to the actual statement. This bug was introduced in 6.52 (with the support for column alias'es introduced here).
    -- In RESULTS tab in text-mode the string "(NULL)" could be truncated to "(NUL"    .

SQLyog 6.52 (April 2008)

  • Features

    -- Data Sync now has SMTP (mail) functionalities similar to other SJA modules.
    -- Autocomplete now supports column alias'es.
    -- Zooming in SchemaDesigner can be done with 'Ctrl +' and 'Ctrl -'.
    -- Added an option to specify (in preferences .. powertools) storage position for TAGS files (used by Autocomplete). On networks where 'roaming profiles' are stored on a domain server specifying a local folder will reduce network traffic and save storage on the server.

  • Bug Fixes

    -- ALTER TRIGGER template did not display DEFINER.
    --     Create/Alter table .. Advanced Properties generated the string '[default]' where it shoud be 'default' only.
    -- Fixed an issue with 'abort on error' in Scheduled Backup. The job was always aborted on error. Now if set to NO it will proceed to next statement.
     -- Notifications Service could crash if query was not SELECT. In particular HTTP tunneled connections were affected by this.
    -- Migration from an Access database could leave a .ldb file behind (that should be deleted after the migration process was over).
    -- On Vista a graphical artifact could occur on right side of screen when program was maximized.
    -- Some other small GUI fixes.

SQLyog 6.51 (April 2008)

  • Bug Fixes

    -- The template for ALTER TRIGGER mismatched the trigger name and the database name.
    --     The OBJECTS tab displayed incomplete information for the server/connection. This only affected COMMUNITY edition.

SQLyog 6.5 (April 2008)

  • Features

    -- Export and copy dialogues were re-designed. Individual Stored Procedures, Views etc. can now be selected.
    -- Added a ZOOM option for a Schema Designer LAYOUT. The ZOOM setting is stored in the LAYOUT itself. Note: Zooming is possible using Ctrl+mouse scroll button (may not be functional on Laptop touchpads and other non-mouse pointing devices).
    -- A Schema Designer LAYOUT can now be saved as graphics (currently .bmp format is supported).
    -- A Schema Designer LAYOUT can now be printed. For saving graphics from Schema Designer to formats not supported consider printing to a 'virtual printer'. Such software exist with support for .pdf, .xps, .png and more. There is a preview option to see how the print will split into more pages (using the settings of current default printer)    .
    -- Transactions are now supported for copy operations (but of course the Storage Engine must support too!). This is configurable from 'preferences'. Data Sync and Migration will use transactions if ENGINE supports it.
     -- Query Builder can now use a VIEW for generating queries.
    -- Copy operations can use BULK inserts (optionally). This can increase speed of those operation up to ~10 times. Migration and Data Sync will now also use BULK inserts if <target> is empty.
    -- Full support for MySQL EVENTS (in GUI, exports, copy, structure sync) with MySQL >= 5.1.
    -- Added an option to export 'all databases' and 'all user data' with 'scheduled backup'. Note the difference: 1st option will export `mysql` database - 2nd will not. None of them will export Information_Schema (it cannot be restored as I_S is a readonly database). However you can select I_S individually for export.
    -- Support for alias in autocomplete. This is in continued development. Currently table alias's are supported (not column alias'es).
    -- Tables are now organized in a folder in the Object Browser.
    -- OBJECTS tab now populate with data for the connection/server, VIEWs and 'stored programs'.
    -- With SSH tunnel reconnection is now functional for the complete connection chain: SQLyog<>PLINK<>SSHD<>MySQL.
    -- For HTTP-tunnel added an option to specify 'urlencode' HTTP header format on a per-connection basis (default is 'text/xml' header format). Using this option can be required if Apache 'mod_security' (as well as some largely undocumented filters and 'hacks') is enabled.
    -- Context help added. Every dialogue of the program has been associated with a page in the help file (CHM) that will open when pressing <F1>.
    -- MESSAGES tab will now report warnings for queries executed from the SQL editor.
    -- Lots of small requests and issues fixed.

  • Miscellaneous

    -- Note that the SJA jobfile format has needed to be changed/expanded due to some of the changes above. The GUI wizards will generate a version string like 'version="6.5"' in the <job> tag. But old (version="4.2") format can still be executed. If there is no version string in the <job> tag (as was the case up to 4.1), 'version="4.2"' will be assumed implicitly.
    -- Note that for copy operations reconnect will be disabled if you use transactions. This is required for data security. If a reconnect took place when still non-committed statements had been executed they would not be committed ever (because with a new connection the transaction log for the old connection is not available) and user would not be aware of this. For Data Sync and Migration transactions are always enabled if ENGINE supports it, because this does not result in any conflict as SJA does not reconnect automatically

  • Bug fixes

    -- Opening a .schemaxml file (to Schema Designer) failed if path contained unicode characters (save not affected and no other save/open operations of the program either).
    -- It could occur that a connection thread started for the purpose of export did not correctly use the same connection parameters as the 'parent thread'. That might result in a 'Error 0'" (actually this includes two different fixes).

SQLyog 6.16 (February 2008)

  • Features

    -- Added an option to specify CHARSET parameter for CSV-import. Unicode (UTF8 and UCS2/UTF16) will be detected automatically. For files encoded with a non-unicode encoding, user must select the MySQL charset used for the import. Alternatively there is a <default> option that will not use the CHARSET parameter at all (= old program behavior).
    --     SJA SMTP (mail) code will now use ESMTP if available and fall back on ('ordinary') SMTP if not (before only ESMTP was supported what failed with some specific routers).

  • Bug fixes

    -- A crash could occur when backing up (using 'export' as well as 'scheduled backup') an object having a DEFINER different than the current user. This further depends on the MySQL version and whether user had SELECT privilege to the `mysql `database or not. Now a message will appear (on the screen or in the sja.log file) that this object was skipped due to lack of privileges when it is not possible to back up.
    -- When exporting to HTML, XML or CSV -formats from the RESULT tab one row could be missing if the RESULT tab dropdown was in edit-mode. EXCEL and SQL formats were not affected.
    -- When data were inserted or updated from RESULT tab, SQL and EXCEL export options would not export the new/changed rows unless after a reconnect.
    --     When connected to MySQL 3.x and 4.0 the ALTER TABLE GUI would generate invalid SQL if existing column(s) were edited and new column(s) added in one operation (a comma was missing).
    --     Assigning privileges (from 'manage permissions) for a specific user to a specific Stored Function and Stored Procedure was buggy (wrong string identifying the ROUTINE type was inserted). Also a problem with VIEW-related privileges was fixed.
    --     A jobfile for 'scheduled backup' created with versions before 6.1 contains a <usecharset> tag (with the values "yes" or "no") that indicates if the backup shall be utf8-encoded. This tag was not properly ignored (as it should from version 6.1) - instead it could occur that a non-existing charset (named 'yes' or 'no' respectively) was requested from the server. That would return an error that again would cause the job to abort.
    -- The HTTP-tunneller was updated to 'work around' an issue with 'foreach' loops on PHP 4.3.10. HTTP-tunneling to a server with that specific PHP version could cause a program crash.
    -- The uninstaller would not remove Start Menu shortcuts on Windows Vista.
    -- If SSH tunnel was used for both connections in DATA SYNC the plink process for the <target> connection was not getting terminated properly.
    --     Display in the CREATE/ALTER TABLE grid would be truncated if an ENUM or SET type was defined with a value containing the ")" character.
    -- Data Sync would not identify that rows containing data like ('data',NULL) and (NULL,'data') are different, as NULL-values did not 'contribute' to the checksums calculated. No update would take place.
    -- The fix in Data Sync for BIGINT Primary Keys containing very large numbers in 6.11 was not complete. Internal data could be truncated what again could result in wrong identification of rows to be inserted, updated or deleted.
    -    - Certain queries (when performing GRID operations) were not 'piped through' the reconnection wrapper module. This could with low 'wait_timeout' server setting result in the 'server has gone away' error message if affected operations were executed with longer intervals between.
    -    -     Structure Sync failed to sync a specified index length.

SQLyog 6.15 (January 2008)

  • Bug Fixes

    -- Fixed a bug with migration of an Access 'text' type that could occur when more/many such columns were migrated.
    --     When the content of an editor tab was changed using 'search and replace' the tab was not properly 'flagged' internally as changed. As a consequence the (*) indicator for this 'change-status' would not display and program would not prompt user if changes should be saved.
    --     Fixed a bug in validating the SP/VIEW/... name while creating. A symptom was that an empty name could be used.
    --     With a TINYINT having (-1) as default Structure Sync would use COLLATE specification and thus generate an invalid statement when connected to a MySQL 4.1.x server.
    --     When expanding/collapsing the folder tree in the Object Browser by clicking the "+" and "-" in a very fast manner, data could be copied to the editor when it should not.
    --     When connected to MySQL 3.23 and 4.0.x < 4.0.18 'reorder columns' could generate invalid SQL with a Primary Key definition.
    --     Improper message was returned when invalid or non-existing path was used for exporting a dump..
    -- After an unsuccessful import (because of syntax error in the file for instance) the file handler was not properly free'd. As a result next attempt would fail with 'Error saving ... ' message. Only HTTP-connections were affected.

  • Miscellaneous

    -- "SET FOREIGN_KEY_CHECKS = 0" is now default where it applies (exports, data sync).
    --     The display for F5/F9 shortcut settings in 'preferences' was changed. 'Reverse' setting now means that F5 executes! It is 'reversed' as compared to what help... keyboard shortcut tells.
    --     This build does not use 'urlencode' in HTTP header. This is not the final solution but we realize that it is more rare that it is needed compared to the situations where it won't work    .

SQLyog 6.14 (November 2007)

  • Bug Fixes

    -- ALTER TABLE would generate invalid SQL with column-level comments.
    --     COMMUNITY version (not ENTERPRISE) could crash when editing connection details.
    --     On Wine a meaningless error message when selecting a table could occur.
    -- Exports could generate duplicate rows if there was activity on the screen while exporting. Windows XP was afffected - not Vista.
    -- With specific data 'export as Excel XML' could mistake text data for binary data.
    -- When a Foreign Key referenced a column used for the definiton of a multi-column Primary Key the Schema Designer could display a "1" and (not a "infinity" symbol as it should be) at the 'parent'.
    -- Horisontal scrollbars were added where missing.
    --     Fixed a display issue in DATA tab with large DPI monitor setting.

SQLyog 6.13 (November 2007)

  • Bug Fixes

    -- Empty or incomplete lines in sqlyog.ini would cause stop reading from the file. As a consequence details that could not be read would not be written. Those details that could not be read were lost.
    --     Reading from sqlyog.ini was slow with huge number of connections.

SQLyog 6.12 (November 2007)

  • Bug Fixes

    -- Structure Sync could generate DROP statements where the name of the object to be dropped was empty.
    --     SQLyog could crash when trying to connect to a server when the thread used for establishing the previous connection had not stopped executing ( code for creating connection wasn't thread-safe).
    -- Scheduled Backup threw the error "incorrect table name" when backing up all tables from MySQL 4.0 and before ('export' had no such issue).
    -- Fixed an issue with Migration Tool where importing Foreign Keys could fail when migrating from Microsoft Access.
    -- Fixed an encoding issue with special characters and Data Sync when syncing between MySQL versions where one supports SET NAMES and the other one does not.
    -- Fixed an issue that could cause SMTP authentication to fail.
    -- Fixed a pointer corruption when importing from a file. This corruption could result in a crash.

SQLyog 6.11 (October 2007)

  • Bug Fixes

    -- The fix for BIGINT based PK's greater than 2147483647 in 6.1 introduced another problem with data sync. Symptom was that updates could fail with MySQL error 1064 (syntax error).

SQLyog 6.1 (October 2007)

  • Features

    -- Visual SchemaDesigner.
    -- Common error dialogue: when a GUI operation returns an error the error message is 'wrapped' in a dialogue explaining the meaning and origin of the error message (note that this is not implemented when manually executing queries from the editor).
    -- Added an option to specify DEFAULT charset/collation for databases and tables different from 'upper-level' default (server/database).
    -- Cleaned up CREATE/ALTER TABLE .. advanced dialogue (removed largely depreciated 'RAID' and 'PASSWORD' options).
    -- In CREATE/ALTER TABLE we now perform client-side validation for the most common user errors (such as failure to specify the length of a data type where it is required).
    -- Functionalities of F5 and F9 can be switched.
    -- Structure Sync now supports column level charset/collations.
    -- Page wise (using the current LIMIT setting) display in table data with '<' (prev) and '>' (next) buttons.

  • Bug Fixes

    -- 'change table type' was disabled when connected to the most recent MySQL 5.1 releases (due to a recent change in the Information_Schema content with those MySQL versions).
    -- Fixed an issue with DATA SYNC when the Primary Key was based on a BIGINT and value for this PK field was greater than 2147483647.
    --     Lots of minor bug fixes.
    -- With a large ('wide') table specific repeated operations with the SCROLL BARs, SCROLL BUTTONs and arrow keys could cause a crash in the DATA tab.
    --     If user's 'AppData' path used special characters (due to a localized 'AppData' folder or a user name with special characters) program was not able to access sqlyog.ini for read and write operations.
    -- Solved the problem reported by a fraction of users that the sqlyog.ini file was not copied when upgrading from 6.05 and earlier versions    .
    -- Fixed a bug with Stored Procedures and Structure Sync. After executing the sync script from the editor it still could occur that the sync tool reported differences.
    -- Importing a dump could add redundant spaces in the definition of SPs, triggers etc.
    -- When reading stored export formatting settings (for 'escaped by', 'enclosed by' etc.) from sqlyog.ini those values would display wrong due to an encoding issue (details: only 6.1 betas 3 and 4 were affected. It was a bug with the fix for special characters in user's AppData path introduced with beta3).
    -- Fixed a crash while opening an ODBC job file.

  • Miscellaneous

    -- The default meaning of F5 and F9 shortcuts has been reversed (since beta 4). F5 now means 'refresh' and F9 'execute'. You can change this default from 'preferences' if you want to keep the old shortcuts.

SQLyog 6.07 (September 2007)

  • Bug Fixes

    -- In 6.06 we re-enabled reconnect in Structure Sync (it was accidentally disabled since 6.0). However after a reconnect the program could enter an infinite loop. A crash could result from this.

SQLyog 6.06 (August 2007)

  • Features

    -- Files used by SQLyog that are not read-only (.ini, .log, .err) are now no longer created in 'program files' files tree (or what localized name it has). The storage follows Microsoft recommendations for the various Windows versions. Existing files will be moved when program is started first time and a backup created in the original position. Windows Vista has actualized this.
    -- CREATE/ALTER TABLE GUI now supports '' (two single quotes) in the DEFAULT column of the grid for defining an empty string as column default. If column type is not char, varchar, varbinary, set or enum a warning will display (that is also true for binary and bit types, where MySQL accepts '' as default - but with strange results!). To use the literal string '' (two single quotes) as column default enclose it in backquotes like `''`

  • Bug Fixes

    -- fixed an issue with 'auto-complete' introduced in version 6.05 where autocomplete windows did not show if cursor was in last position of the editor.
    --     Fixed an issue with empty strings when migrating data from the Sage accounting software on Win2K.
    -- Structure Sync truncated default charsets one character at the end ('utf8' became 'utf' etc). This bug was introduced in 6.05.
    --     Fixed issues with comments inside Stored Procedures, Triggers etc. Structure Sync and exports were affected in various ways.
    -- Fixed a bug with "copy database to diff host/db" and data sync if both the connections are SSH.     Symptoms included 'access denied' error and a database being synced to itself    .
    --     Reconnection in Structure Sync (introduced in version 5.22) was accidentally disabled since 6.0.
    --     If program was closed in a state where DATA/RESULT pane was hidden, it could not be displayed again after program restart unless 'resetting' sqlyog.ini.

SQLyog 6.05 (July 2007)

  • Bug Fixes

    -- The fix in 6.04 for UTF8-encoded files introduced new problems with UTF16-encoded files.
    -- BLOB viewer was not functional in Wine/LINUX. This bug was introduced in 6.0.
    -- Font settings in 'preferences' had no effect on RESULT tab in text-mode.
    -- Fixed a rare issue where - when exporting a database with a Stored Procedure/Function - the leading character of the routine name could be substituted with another character.
    -- With text data greater than 5120 bytes Migration Tool could truncate data. This bug was introduced in 6.0.
    -- Closing a connection on Wine/LINUX could cause a program crash.
    -- Solved a highlighting issue with 'quoted strings' and `backquoted identifiers`containing a singlequote ('quoted\'strings' and `backquoted'identifiers`)

SQLyog 6.04 (June 2007)

  • Bug Fixes

    -- Fixed a rare crash that could occur when executing a script returning multiple results and an error occurred with the last one.
    -- HTTP credentials (username and password) were not saving properly in job file.
    -- 'duplicate table' failed to copy a specified index length.
    -- The encoding of utf8-encoded files could be detected wrong when reading into the SQL-editor. (Note: this is really a bug in Windows utf8 implementation that we 'worked around').
    -- Fixed a focus issue when two or more connections were open    .
    -- Structure Sync could fail with identically named (but different) Stored Procedures on either host    .

SQLyog 6.03 (June 2007)

  • Bug Fixes

    -- Program could crash when opening a migration job file containing a query.
    -- Importing with the Migration Tool using a 'file-DSN' was broken since version 6.0. Various errors could result when trying to use such DSN. 'user-DSN' and 'system-DSN' wore not affected.
    -- The special PLINK build shipped with SQLyog ENTERPRISE failed to authenticate if there were spaces in the password/passphrase.
    -- When connected to MySQL 3.23/4.0 there were problems when editing data in RESULT TAB with certain special characters. The fix for this in version 6.02 was not complete.
    -- Fixed an issue where SQLyog threw a 'meaningless' error message.

SQLyog 6.02 (June 2007)

  • Bug Fixes

    -- Binary data (such as images) would sometimes not import correctly with the migration tool.
    -- Migration of UNICODE data is now functional with the MyODBC driver version 3.51 (MyODBC 5.0 (beta) still not supported).
    -- Cursor focus would be lost when switching between applications with ALT+TAB.
    -- Fixed a display issue in the RESULT tab with certain special characters when connected to MySQL servers where 'SET NAMES' does not apply (MySQL 3.23 and 4.0).

SQLyog 6.01 (June 2007)

  • Bug Fixes

    -- Fixed some issues when migrating from MS SQL Server.
    -- When opening an existing job file in the Migration Wizard the column mapping in that job file was not honored.

SQLyog 6.0 (June 2007)

  • Features

    -- SQLyog is now fully UNICODE-compliant.
    -- Advanced GUI Query Builder.
    -- Filtering of data from the context menu of a cell in the GRID of DATA tab.
    -- Sorting on multiple columns in DATA tab.

SQLyog 5.32 (May 2007)

  • Bug Fixes

    -- Fixed an issue in HTTP Tunneler that could cause a crash.
    -- Fixed some GUI issues.

SQLyog 5.31 (May 2007)

  • Bug Fixes

    -- Fixed an issue in data Sync when TIME type field is used as a primary key.
    -- When Exporting a view without a 'Drop View' option errors could occur while importing.
    -- An issue while exporting 'Data Only' from a database containing view.
    -- Some minor bug fixes.

SQLyog 5.30 (May 2007)

  • Bug Fixes

    -- Ampersand (&) is showing as underscore(_) in blob viewer.
    -- Flickering issue in vista.
    -- Migration issue with some specific data.
    -- Stored procedure / Function crash with limited privileges.
    -- An issue with duplicating table.
    -- Several small (mostly GUI-related) fixes.

  • Miscellaneous

    -- Removed the preferences option to log queries in history tab during batch jobs.

SQLyog 5.29 (April 2007)

  • Bug Fixes

    -- Fixed an issue which caused SQLyog to consume high CPU even in idle mode.

SQLyog 5.28 (April 2007)

  • Bug Fixes

    -- Fixed an issue with Migration Wizard.
    --     Fixed an issue with Database Synchronization.

SQLyog 5.27 (March 2007)

  • Security

    -- Norton Antivirus 2007 (starting with virus detections from 25th March) reported that the SQLyog installers were virus. The files would be quarantined. It was an issue with the NSIS installer-builder. This software was updated. Note: this NAV alert was/is a 'false positive'!!

  • Features

    -- Full support for the SolidDB storage engine - including Foreign Key support. SolidDB from version 5.0.27-0064 is supported.
    --     A small improvement to the Migration wizard: when importing to an existing table the wizards now displays the columns of that table in the 'map' dialogue.

  • Bug Fixes

    -- copy to clipboard with LONGBLOBs could cause a crash.

SQLyog 5.26 (March 2007)

  • Bug Fixes

    -- Fixed a port forwarding issue with Scheduled Backup and SSH tunnel.
    --     A buffer overrun could occur in datasync (as SQLyog internal string class was not properly used).
    --     When a string was displayed in the GRIDs and this string was too long to 'fit' the width of the cell the program could enter an infinite loop and become irresponsive    .
    --     When SQLyog was installed to a folder where the path contained a SPACE character and there was a file in the path 'matching' the path-before-the-space (example: in C:\ there was a file named 'program' and SQLyog was installed to 'C:\program files\...') a Windows error message would occur on some Windows versions (including XP) telling that SQLyog was not a valid Win32 program.
    --     Fixed some rare GUI issues.

SQLyog 5.25 (March 2007)

  • Bug Fixes

    -- When installing 5.23 or 5.24 over 5.22 (or earlier) the option not to save passwords to the sqlyog.ini-file was disabled for existing connections.
    --     Fixed an issue with ALTER TABLE and UNSIGNED decimal, float and double types.

  • Miscellaneous

    -- When user is doing a 'export as SQL' from a TABLE, SQLyog now displays a warning that this export option is not giving a full backup and user should consider using the 'backup as SQL dump' option instead (the 'export as SQL' option introduced with SQLyog 5.22 was intended mainly for use with RESULTs and not TABLEs).

SQLyog 5.24 (March 2007)

  • Bug Fixes

    -- Fixed a crash occurring with copy operations ('copy database/table', 'duplicate table) with HTTP-connection and php_mysql() extension at the target. HTTP with php_mysqli() extension was not affected.

SQLyog 5.23 (February 2007)

  • Security

    -- Added a 'save password/passphrase' option for the SSH password/passphrase.

  • New Features

    -- Each QUERY tab now has is own 'child' (set of) RESULT tab(s). Issuing a query from one QUERY tab will not destroy or overwrite the results from a query issued from another QUERY tab. To display a RESULT tab just click its 'parent' QUERY tab. Also MESSAGES, DATA and OBJECT tabs are now 'children' of a specific QUERY tab 'parent'. HISTORY however is shared between all QUERY tabs.
    -- HTTP-tunneling now supports both the php_mysql() and the php_mysqli() PHP<=>MySQL connection methods. The tunneler will detect which extension is available and use it. If both are available php_mysqli() will be used. One important aspect is that with php_mysqli() the results from a SELECT statements inside of a Stored Procedure will be returned to the CLIENT - and SQLyog will display a RESULT tab for each such query.
    -- SSH-tunneling now supports public/private key authentication.
    -- Added support for SSL-encrypted connections.
    -- As a consequence of the above the Connections Manager design has been reorganized.
    -- SQLyog now supports the PBXT (PrimeBase XT) storage engine for MySQL 5.1 and 5.2 (PBXT version 0.98 and higher). Also Foreign Keys are supported with PBXT.

  • Bug Fixes

    -- Fixed a crash (occurring in table menu and context-menu) on Windows 98. This occurred in COMMUNITY version only - not ENTERPRISE. This bug was introduced in 5.22.
    -- If a connection (only HTTP connections effected) was deleted from Connections Manager details shown for other connections could 'mess up'.
    -- The drop-down showing the alternative values for a ENUM type column would display empty from RESULT tab (but not from DATA tab and SET types were not affected either).
    -- The drop-down showing the alternative values for ENUM and SET type columns would display NULL as an option even when the column was declared NOT NULL. Both DATA and RESULT tab were affected.
    -- It was not possible to specify UNSIGNED for FLOAT and DOUBLE types from 'CREATE TABLE' and 'ALTER TABLE'.
    -- Fixed some small issues with ALTER TABLE and table level comments (an InnoDB specific issue, an issue with the " ' " character).
    -- If more connections were open and one of those was a HTTP-connection, then HISTORY data from this HTTP-connection would be written to the HISTORY of another connection, when that other connection window was made active.
    -- Fixed some rare issues occurring if the connection to the server was lost (a rare crash, a repainting issue).
    -- DATA SYNC now perform operation on tables in the order DELETE > INSERT > UPDATE. This solves a problem (rows could be deleted on target) occurring with certain type of applications (including Forums) that had some sort of 'trigger code' updating a 'counter' row in a table while that table was synced.
    -- If a query was running in one connection window, the "STOP running query" functionality would not work in that window if another database was selected in another connection window in between..
    -- Fixed a multithreading issue that in rare situations could prevent HTTP connections to be successful.
    -- Fixed a flickering/CPU-utilization issue on Windows Vista.
    -- On multimonitor systems when the Primary Monitor was the right monitor and program window was moved to the Secondary (left) Monitor and then closed, it would open again on the right/Primary Monitor next time. This is now fixed - it will open where it was last closed (see next note too, however!)
    -- On Windows 98 when program was closed from a minimized state it would open minimized next time. After that only 'minimized' and 'maximized' (and not 'normalized') states were available. Now it will always open in a 600*600 pixel program window on upper left corner of the (primary) screen when it has been closed from a minimized state.
    -- In SQLyog 5.13 we implemented 'transparent escaping of the escape character' in CSV export. No matter if the user entered '\' or '\\' as the escape character '\' would be the escape character (and the SQL would be like "... ESCAPED BY '\\' ...". But it was never implemented in CSV-import like this. It is now!
    -- 'copy to other ... ' would garble utf8 character if one or more connections were HTTP connections.
    -- In the XML-schema used by SJA the '&' character (ampersand) was not properly encoded as '&amp;'. As a consequence most SJA jobs would fail when user names, database names etc. used this character.
    -- Fixed an issue with 'favorites' in Windows Vista.
    -- Executing a query of the form "SELECT ... from databasename.tablename" would print an error if another database was selected in Object Browser and if one or more query tab was in 'edit' mode. In this situation the QUERY tab will be 'reset' to 'non-edit' mode in such situation.
    -- 'reorder columns' did not use escaping for column-level comments.
    -- 'duplicate table' failed to duplicate column-level comments for autoincrement-fields.
    -- S    everal small (mostly GUI-related) fixes.

SQLyog 5.22 (January 2007)

  • Contributions/Credits

    -- With this release we have finished integrating the contribution donated by our user Ray Anderson, Sacramento, California. Contributions include quite a lot of small fixes for font and grid -related issues.

  • New Features

    -- Added direct export to Microsoft Excel XML-format
    -- Added 'export data as SQL' as an option. Note: this feature is NOT intended for backup purposes as only INSERT (DATA) statements and a very simple CREATE statement will be created.
    -- All available export options are now available form RESULT tab and DATA tab as well
    -- Redesigned menus and dialogues related to DATA export for better clarity.
    -- SQLyog Backups are now 'backwards compatible' (they import on earlier MySQL versions due to the use of 'version-dependent conditional comments' (like /*!40101 Engine ...*/)).
    -- When connected to MySQL version 5.x we do not any more query Information_Schema when displaying objects in the Objects Browser when other and faster options ("SHOW ...", "SHOW ... STATUS ... ") are there - and they are executable for even unprivileged users, of course!.

  • Bug Fixes

    -- Fixed an issue with the editor, where a lot of empty lines would case SQLyog to fail to recognize where a statement started and stopped.
    --     Fixed an issue with 'copy database to different host' (it was copying only one Stored Procedure and one Stored Function). This bug was introduced in v5.20.
    --     'ALTER TABLE .. advanced properties' did not show the non-default options that were already set (except for Storage Engine setting).
    --     STRUCTURE SYNC did not use the connection code (a function) that the rest of the program does, and would not reconnect if a connection was lost while retrieving the database structure.
    -- Fixed an issue with DATA SYNC when there were TEXTs and/or BLOBs in a table, but no Primary Key
    --     'reorder columns' raised an error with numerical fields. This bug was introduced in v5.20.
    --     'reorder columns' failed on MySQL 3.23. This bug was introduced in v5.20.

SQLyog 5.21 (November 2006)

  • New Features

    -- Autocomplete speed improvements (about 10 times faster than version 5.20).
    -- SJA for Windows now has integrated debug facilities like those introduced with SQLyog 5.20

  • Bug Fixes

    -- Wrong connections details would cause Notifications Services to crash
    -- Backing up an empty database would cause a crash
    -- It was not possible to create more than one table with an autoincrement field, unless closing the CREATE TABLE dialogue.
    -- Also a few cosmetically issues were fixed

SQLyog 5.20 (October 2006)

  • Naming and Licensing

    The free SQLyog version is now named 'SQLyog Community Edition' and is released as Open Source under the GPL license

  • New Features

    -- User Management fully up-to-date with MySQL 5.1.
    -- SQLyog now dynamically retrieves the list of available Storage Engines from MySQL.
    -- Support for SQL-server/Access 'money'/'currency' type with the Migration Tool.
    -- Added option to name a Foreign Key CONSTRAINT.
    -- Added an option to 'BLANK' a user's password.
    -- It is now possible to use the auto_increment attribute with an INTEGER column that is not defined as PK. CREATE TABLE will create the UNIQUE KEY needed for you. Also the Migration Tool now supports such autoincrement field.
    -- The 'smart' KEYWORDS/FUNCTIONS/DEFAULTS handling introduced with SQLyog 5.1 is now configurable from 'preferences'.
    -- HTTPS tunneling now supports certificates.
    -- Font settings enhanced. There are now settings for BLOB-viewer, HISTORY/OBJECTS, Editor and 'everything else' (basically GRIDs). As of 5.2 the last one covers DATA tab, RESULT tab, and CREATE/ALTER TABLE panes. It will be completed in coming versions.
    -- Added an option to STOP 'copy table/database'.
    -- DATA SYNC will now show 'signs of activity' when syncing BIG tables.
    -- Migration Tool can now import data from a VIEW on an ODBC-source to a TABLE in MySQL - provided of course that the ODBC-driver exposes the VIEW and the data in it.
    -- SQLyog now has built-in debugging capabilities. The implementation of this does not involve additional code or processes running, and does not affect the efficiency of the program.

  • Bug Fixes

    -- Fixed issues with import of Foreign Keys and the " ' " character in comments in the Migration Tool.
    -- (scheduled) backup did encode as utf8 even if you deselected the option in the Wizard. Only the SET NAMES statement was omitted.
    -- Copy to other ...' used excessive memory when copying big tables. This is now fixed.
    -- The import dialogue displayed twice as many SQL-statements as there actually was.
    -- The warning that more rows would be updated did not display with some special Schemas (schemas without a PK and extensive use of TEXT/BLOBs).
    -- Conditional comments (like /*! ... */) raised an error with the import tool.
    -- Fixed an issue with import of indexes from PostgreSQL.
    -- When two tables named identically except for the LETTERCASE existed in a database 'copy to other ...' would always copy the 'most LOWERCASED' of them.
    -- When UPDATING SQLyog does generally not include BOLBs?TEXTs in the WHERE clause that it sends. However it should when that column is used for a Primary Key. This is now fixed.
    -- Migration will now map a TEXT type from SQL Server or MySQL to a TEXT and not VARCHAR.
    -- The display of the total time passed for the query as displayed in MESSAGES tab was wrong (information in status line was correct).
    -- Several small bug fixes - most of them GUI-related.

SQLyog 5.19 (September 2006)

  • Bug Fixes

    -- Fixed a critical crash when editing data from RESULT-pane.
    -- Fixed a bug with migration tool that could cause negative values to become 0 (zero).

SQLyog 5.18 (September 2006)

  • New Features

    -- Nag screens have been removed. This is the last release of SQLyog Free Edition. From version 5.2, SQLyog Free Edition will be renamed to SQLyog Community Edition and the source code will be released under GPL.

SQLyog 5.17 (August 2006)

  • New Features

    -- This release introduces the 'short' DELIMITER format (like the 'mysql' command line client and other programs from MySQL AB) with SQLyog. The old/long format is still supported

  • Bug Fixes

    -- Fixed a port forwarding issue with SSH tunneling when SSH-host and MySQL-host were different. This bug was introduced in 5.15.
    -- Fixed a memory allocation issue with 'autocomplete' that in rare situations could cause SQLyog to crash.
    -- Fixed some other small issues - mostly GUI-related.

SQLyog 5.16 (July 2006)

  • New Features

    -- Editor TAB width is now configurable.
    -- Easier use of keyboard shortcuts to copy and paste data in the grids.
    -- Migration tool has improved error logging and supports import of Unicode data.
    -- Support for Far Eastern character sets in the connections manager ('CJK languages').

  • Bug Fixes

    -- It was not possible to switch between connections windows while a long-running query was running.
    -- Several small bug fixes with the Migration Tool.
    -- Small GUI bugs fixed with the Grids.
    -- Fixes to the Structure Sync Tool (GUI issues and an issue with triggers).
    -- Fixed some issues with the Data Sync Tool when PK was based on a TIMESTAMP or a DATETIME.
    -- A fix with User management (user lost non-GLOBAL privileges if his name or host-descriptor was changed).
    -- A new connections window would sometimes not show up 'on top' of existing connections windows.
    -- Autocomplete did not update the TAGS-db-files 'on the fly' when an object was created/dropped/changed.

SQLyog 5.15 (June 2006)

  • SQLyog Enterprise will return specific error messages if SSH Tunneling fails for any reason. Previous versions of SQLyog used to return a generic error message.
  • Fixed a bug in HTTP Tunneling when magic_quotes_runtime had the value on in php.ini
  • Fixed a minor bug in “Reorder columns” while connected to MySQL 4.1.

SQLyog 5.14 (June 2006)

  • Lots of bug fixes and speed improvements.

SQLyog 5.13 (May 2006)

  • Fixed a crashing bug while inserting LONGBLOB data.
  • Fixed a bug in Structure sync.
  • Fixed a crashing bug with Autocomplete.
  • Better error handling in SQLyogTunnel.php

SQLyog 5.12 (May 2006)

  • Buffer overflows error on startup.
  • Fixed an issue where SQLyog was not starting in Win98.
  • Fixed an option where Favorites menu where not working on Win98.

SQLyog 5.11 (April 2006)

  • Fixed a system crashing bug while opening JOB files in wizards.

SQLyog 5.1 (January 2006)

  • Smart Autocomplete that suggests possible matches for your object names and keywords as you type in the SQL editor. This enables significantly faster MySQL development by drastically reducing the amount of keyboard input required.
  • Favorite Manager to neatly organize your favorite SQL statements.
  • Complete support for TIMESTAMP in result/data tab.
  • Support for MySQL v5.x objects in Structure Sync Tool.

SQLyog 5.02 (January 2006)

  • Fixed a system crashing bug in "Copy DB to Different Host" option.
  • Fixed a memory buildup issue in Migration Toolkit.
  • Fixed a memory buildup issue in Query Editor.

SQLyog 5.01 (December 2005)

  • Complete support for all MySQL 5.1.

SQLyog 5.0 (November 2005)

New Features

MySQL 5 Support:
  • Complete support for all MySQL 5.x features like Stored Procedures, Functions, Triggers & Views.
  • SQL editor now supports configurable delimiter using the DELIMITER command.
  • Compatibility with all strict-modes introduced in MySQL v5.x.

    Data Synchronization:

  • Data sync tool now supports sync between tables having NO indexes.

    Scheduled Backups:

  • Support for adding TIMESTAMP in the backup filename.
  • Support for exporting individual tables in a TIMESTAMP-named folder.

    SQLyog Job Agent:

  • Support for providing session xml file path for SJA through a command line argument. Now you can execute: sja -ssession.xml job.xml to provide your own session XML file path.

    SQL Editor:

  • Multitabbed SQL editor interface.
  • Option to generate SELECT and INSERT statements for table with a click of a mouse (or shortcut key).
  • SQLyog will now prompt you to save SQL statements before closing the tab. This is configurable through Tools -> Preferences.
  • Colors used for syntax highlighting are now configurable.
  • SQL editors now support Goto Line option.
  • Double-clicking on an object name in the Object Browser copies the name to the Query Editor. This option is configurable from Tools -> Preferences.
  • Display of object information on node selection in the Object Browser is now configurable through Tools->Preferences.

    Security:

  • Added an option where a user can specify to save connection details password or not.

    Miscellaneous:

  • Support for SET NAMES in SQLyogTunnel.php.
  • Support for BLOB columns in WHERE clause while updating a row in Data tab.
  • Option to fill Excel friendly values while exporting to CSV format. This feature is also available while copying resultset to the clipboard. Now copying & pasting resultsets to Excel for further processing is very straight-forward.
  • Support for field level comments in Create/Alter Table window.
  • Support for FK names while creating foreign keys.
  • HTTP Tunneling now supports importing of SQL batch files containing DELIMITER command.
  • SQLyog will now display an error message while importing CSV data on a HTTP connection.
  • Improved Powertool wizards.
  • SQLyog will now create all log and .ini file in the Application Data folder if the installation directory is read-only.

    Bug Fixes:

  • Fixed a crashing bug in SQLyog Migration Toolkit.

SQLyog 4.1 (August 2005)

New Features

  • Scheduled ODBC Import - Painless migration to MySQL including the ability to create jobs to transfer external data at regular intervals.
  • PHP Tunneler now checks for MAGIC_QUOTES flags. You will need to update SQLyogTunnel.php from the latest build of v4.1.

SQLyog 4.07 (July 2005)

New Features

  • Reconnect and re-execute a query if timeout occurs.
  • Connection names are now alphabetically sorted in the connection window.
  • Support for more images in BLOB viewer.

Bug Fixes

  • Fixed a critical bug in Data Sync Tool.
  • Fixed a bug where shortcut for hiding Object Browser was not working.
  • Fixed a syntax coloring bug in SQL editor.
  • Fixed a bug in Alter Table window.
  • Fixed a bug with respect to scrolling in result and data grid.
  • Fixed a bug related to selection of database in "Export As Batch Script" option window.
  • Fixed a bug with export as CSV option.

SQLyog 4.06 (May 2005)

New Features

  • Option to select the window that you want to put focus on after execution of a query.

SQLyog 4.05 (April 2005)

New Features

  • Powerful scheduled backup with email notification.
  • Dialogless result editor with option to update multiple tables.
  • Multithreaded query execution with option to allow multiple query execution simultaneously.
  • Optimized SQL import, up to 1000% faster then previous versions.

SQLyog 4.03/04 (February 2005)

New Features

  • HTTP Tunneling now supports Proxy/HTTP Authentication.

Bug Fixes

  • Fixed a non-critical bug in Data Sync Tool.

SQLyog 4.02 (February 2005)

Bug Fixes

  • Fixed a critical bug affecting user administration.

SQLyog 4.01 (January 2005)

Bug Fixes

  • Fixed a system crashing bug while using multi monitor setup.
  • Fixed a system crashing bug in data synchronization when using HTTP Tunneling.
  • Fixed a bug where '&' character was handled incorrectly when using HTTP Tunneling.
  • Fixed a SQL syntax coloring bug in SQL Editor.
  • Fixed bugs while exporting data as CSV.

SQLyog 4.0 (November 2004)

New Features

  • SQLyog is now FREE.
  • SSH and HTTP Tunneling - smartly manage your MySQL server even if the MySQL port is blocked or remote access to MySQL is disallowed!
  • New and improved SQL editor.
  • Optimized SQLyog Job Agent for data synchronization.
  • Fully compatible with MySQL versions 3.22.x to 5.x.
  • Passwords are now kept in an encrypted format in sqlyog.ini.
  • Improved HELP file.

SQLyog 3.7 (April 2004)

New Features

  • SQLyog Notification Services.
  • SQLyog Database Synchronization Tool now supports 2-way synchronization!
  • Now you can execute SJA jobs through SQLyog using Tools -> Job Manager.
  • Fully compatible with MySQL versions 3.23.x to 4.1.1.

SQLyog 3.64 (February 2004)

Bug Fixes

  • Minor bug-fix in SQLyog Job Agent.
  • Fixed a bug involving FULLTEXT index in Column Reorder/Drop FK option.

SQLyog 3.63 (November 2003)

Bug Fixes

  • Minor bug-fix in SQLyog Job Agent
  • Fixed a bug with column width in Insert/Update window.
  • Fixed a minor UI bug.
  • Fixed a bug in Structure Sync Tool.

SQLyog 3.62 (October 2003)

Bug Fixes

  • Minor bug-fix in SQLyog Job Agent

SQLyog 3.61 (October 2003)

  • Minor bug-fix in SQLyog Job Agent

SQLyog 3.6 (October 2003)

New Features

  • Database synchronization tool.
  • Schedule database synchronization.
  • Ability to set various preferences like Font, columns width, etc.

Improvements

  • Improved keyword and function list for syntax highlighting.
  • Improved persistence of Dialog settings.
  • Improved column width algorithm in Result Window and Insert/Update window.
  • Numeric data are right aligned in Result Window.
  • Bulk insert option breaks scripts into multiple lines, making it more readable.
  • Improved user interface. WinXP style icons and toolbars.
  • Lot of minor improvements....

Bug Fixes

  • Fixed a bug in Copy Table... option where auto_increment were not copied correctly.
  • Fixed a bug where edit menu was popping up at wrong coordinates.
  • Fixed a bug with repainting of editor window.
  • Fixed a bug in Insert/Update wherein you could not specify blank limits.
  • Fixed a data display bug in Insert/Update window.
  • Lot of minor bug fixes...

SQLyog 3.52 (July 2003)

Improvements

  • Improved SQL Editor.
  • Fixed a bug wherein Find/Replace dialog was not working.
  • Fixed a bug wherein opening of any Modal window resulted in SQLyog being removed from Alt+Tab list.
  • Fixed a bug where wrong column numbers were getting shown in the status bar,

SQLyog 3.51 (June 2003)

Improvements

  • Improved Execute Batch Option.
  • Improved support for MySQL 4.1.
  • Improved SQL Editor.
  • Allows selecting UNSIGNED option for DECIMAL datatype in Create/Alter Table dialog

SQLyog 3.5 (June 2003)

Improvements

  • Complete support for MySQL 4.1.
  • Vastly improved ODBC Import.
  • Restores the app Window Location on StartUp.
  • BLOB data does not require double click for viewing if the data is < 255 bytes.
  • More compact and optimized executable (480 KB).
  • Lots of minor improvements...

Bug Fixes

  • Fixed a bug where auto_increment information was not getting copied using Copy Table... option.
  • Fixed a bug where TIMESTAMP values were not getting enclosed with ' using Export As Batch Script Option...
  • Lots of minor bug fixes...

SQLyog 3.11 (March 2003)

Bug Fixes

  • Fixed a system crashing bug in Alter Table option when working with MySQL v4.1
  • Fixed a bug in Copy Database To Another Host/DB option, which prevented Structure Only option from getting selected.
  • Fixed a bug in Foreign Key Management option, where ON UPDATE [values] was not executed properly.
  • Fixed a bug with Bulk Insert option in Export Database As Batch Script.
  • Fixed a bug in Diff Tool where a ` character was missing in the generated script.
  • Added option to Select/Unselect all tables in Backup/Restore Table option.
  • Fixed a resize bug in Result Window.

SQLyog 3.1 (March 2003)

Bug Fixes

  • Fixed a system crashing bug while altering table structure for tables meeting both of the following attributes: 1) having a column of SET or ENUM type. 2) value list of SET or ENUM exceeds beyond 256 bytes.
  • Fixed a bug which effected width of columns in Grid.
  • Fixed a system crashing bug in Update For Query Window.

Improvements

  • You can now choose individual tables to be copied to another Host/dB
  • You can make foreign key relationships within same table.
  • Improved SQL Editor to support HUGE SQL Scripts.
  • You can filter databases to be added in the the ObjectBrowser.
  • Option to select your own Font.
  • Query Window shows the connection name in its Title.
  • Option to truncate database (it will empty all the tables).
  • Option to generate Single Insert Statement in Export As Batch Script feature.
  • Option to export data of a table in HTML/XML.
  • Improved Installer

SQLyog 3.03 (February 2003)

Bug Fixes

  • Fixed a system crashing bug while Synchronizing Databases.

Improvements

  • You can choose BDB Table Handler while Creating/Altering Tables.

SQLyog 3.02 (February 2003)

Bug Fixes

  • Fixed a bug while Updating BLOB data in Insert/Update dialog box.
  • Fixed a bug while creating relationship between columns having different names.

SQLyog 3.01 (February 2003)

Bug Fixes

  • Fixed a system crashing bug while Synchronizing Databases.

SQLyog 3.0 (February 2003)

New Features

  • ODBC Import. The simplest and the most powerful tool to import data from any ODBC compliant database to MySQL.
  • Database Synchronization Tool. Bring your remote databases in Sync with a single mouse click.
  • Connection Manager.
  • Manage relationships on InnoDB tables. All other options fully InnoDB compliant.
  • Column Reordering.
  • Copy databases between two MySQL hosts.
  • Insert/Update on a Resultset of a query.
  • Fully updated keyword list for syntax highlighting.

Improvements

  • Pick list for Enum/Set values in Insert/Update Dialog.
  • Improved data grid. Allows multiple row deletion.
  • Option to add column name while exporting data in CSV.
  • Multi selection of tables in export as SQL Scripts dialog.
  • Empty a database with a single click of mouse.
  • Show/Hide edit window.
  • Improved error messages.

Bug Fixes

  • Primary key values are escaped in Insert/Update dialog.
  • Fixed a bug with # commenting style.
  • Fixed a bug while saving a BLOB data.
  • Fixed a bug in Alter Table dialog for BINARY attribute.
  • Fixed a memory leak problem while creating a database.
  • Fixed a bug where FULLTEXT was not getting copied in Copy Table option.
  • Fixed a bug while trying to delete a row when no Primary Key defined on the table.

SQLyog 2.51 (November 2002)

Improvements

  • When a resultset is returned with a BLOB field, the text now gives information to DblClk on the field to view data.
  • Now supports dB/Table names with spaces, -, # etc.

Bug Fixes

  • Fixed a system crashing bug while altering table structure for tables meeting both of the following attributes: 1) having a column of SET or ENUM type. 2) value list of SET or ENUM exceeds beyond 128 bytes.
  • Fixed a bug with current row focus in Insert/Update dialog.

SQLyog 2.5 (November 2002)

New Features

  • Alter Table structure in an easy to use Grid mode.
  • Insert / Update data in a table.
  • Save your BLOB data in a file.
  • Client side sorting
  • Create / Edit Users.
  • Manager permissions for Database / Table / Column.
  • View information for Database / Table.
  • Export database schema in HTML.
  • Execute very big SQL batch files.
  • Export data in Fixed Width.
  • View all the queries executed in history log.
  • Various operations on Tables.

Improvements

  • Improved Export functionality.
  • Improved Import functionality.
  • Improved SQL Editor.
  • Show / Hide Result Pane.
  • Lot of keyboard shortcuts for "mouse-less" experience.
  • And many more...

Bug Fixes

  • Lot of bug fixes.

SQLyog 1.71 (August 2002)

New Features

  • A very easy to use Table Maker through which you can create tables quickly and easily.
  • Support for BLOB fields.
  • Option for Table Diagnostics.
  • HIDE / SHOW object browser.
  • Supports binary data while exporting.
  • Flush Host/Logs/Privileges/Tables.
  • View results in Text mode as well as in Grid Mode.
  • Copy results (all record as well as particular record) from a query in Clipboard in CSV format.
  • Option of XML, CSV and HTML export are clubbed in one dialog box. Just give the name and select the type of file from the File Type dropdown.
  • mySQLyog has been renamed to SQLyog.

Improvements

  • SQL Editor supports more data.
  • Lot of keyboard shortcuts for "mouse-less" experience.
  • Auto-search facility in the Export Data dialog box.
  • Import data dialog box has Select / Unselect All Field option.
  • Focus is set on the password field if the connection to mySQL fails.
  • Execute current query, selected query or all the query(s).
  • Smarter column width in the Result window when result is in Grid Mode.
  • Fills the Connection Dialog Box with the default value for the first time.
  • Object Browser does not hold all the data about the server in one instance. Whenever you want the data, it is retrieved at that time. Helps in better memory use and increases the speed to connect to MySQL server.

Bug Fixes

  • Fixed bugs while exporting large table structure to a file.
  • Fixed bugs while selecting table with long name while exporting data.
  • Fixed bugs in exporting long table names and fieldnames while importing data.
  • Fixed a system crashing bug when a user gives big name for a personal key.
  • Now formatting is done to text if text is pasted from non-text source. |
  • Fixed a system crashing bug while executing procedure analyse().

mySQLyog 0.9 (May 2002)

  • First release of the software.
  • Added most of the common features of a query analyzer.
  • Supports multiple queries, they have to be separated by; (C like separation).
  • Adding SQL to personal folder added. This relieves you from the burden of saving and opening of the most common and frequently used SQL commands.

.

.


Getting Started | SQLyog GUI for MySQL

﻿﻿ Getting Started | SQLyog GUI for MySQL

Getting started

Download SQLyog from Download Page. Execute it and follow the steps to install the program.

Once you start SQLyog, you will get a figure as shown below. The connection window allows you to connect to the MySQL server.

SQLyog gives you a choice between four different connectivity options. No matter whatever your firewall/proxy/ISP settings are, you should be able to smartly manage your MySQL Server(s). The various connectivity options (in the order of responsiveness and network efficiency) are:

  • Direct connection using MySQL C API: This is by far the fastest way to connect and manage your MySQL server. This is the preferred method if you are not concerned about your MySQL traffic being spoofed. However, this requires direct access to your MySQL server. Most ISPs block the MySQL port or disallow remote access.
  • SSH Tunneling *: Use this option if you need to encrypt the contents of your MySQL traffic, but still want the efficiency of the MySQL C API. If your host supports SSH tunneling, SQLyog can use the tunnel to communicate with MySQL.
  • HTTP Tunneling *: This option saves your day if your ISP/MySQL provider disallows remote access, either my blocking the MySQL port or by giving access to “localhost” only. The response is slow compared to the previous options since the data is XML encoded and HTTP is stateless by nature. However, you can use all the cool features of SQLyog (and start getting more sleep!).
  • HTTPS Tunneling *: This option is similar to HTTP Tunneling but adds another layer of security by establishing a secure channel. *
  • SSL Encryption *: With this option all communication between SQLyog and the MySQL server is encrypted. The MySQL server must support this option. Not all servers do!

To get more information on how to connect using your preferred method, click on one of the topics below.

Direct connection using MySQL C API
Connection using SSH Tunneling *
Connection using HTTP Tunneling *
Connection using HTTPS Tunneling *
Connection using SSL Encryption *

*: This feature is available in SQLyog Professional, Enterprise and Ultimate.

If you are using SQLyog for the first time then you have to first create an instance of your database connection. You can do this by clicking on New button in the connection manager dialog box.

New | Click the new button. In the name field (figure shown right) type the name by which you will recognize the connection. By default SQLyog will create an instance with default values (e.g. localhost, root)
Save | This button allows you to save any change in the connection details
Delete | Click this button to Delete the currently selected connection. Click Yes to Delete
Rename | Click the rename button to rename a connection. Note that Connection Names are names used internally by SQLyog only (and not MySQL). Connection Names are used by SQLyog for storing the connection details. Also, certain SQLyog functionalities will make use of the connection name as stored by SQLyog.


Change Language | SQLyog MySQL Management Tool

﻿ Change Language | SQLyog MySQL Management Tool

Change Language

SQLyog gives an option to change the language in user interface. Non-English speaking users can change the language from the dropdown list Tools-> Change Language which shows available languages. If you click on one of these languages, all user interface elements are translated into that language after SQLyog restarts.

The installer has an option to use either English or Japanese. The language you select here will also be the default language use for SQLyog GUI.

Once you start SQLyog, you will get a screen as shown below.

Select "Change Language" another window with a drop down will appear as shown below.

Once you slect Japanese close SQlyog and restart again you will have the new interface.


Configure SQLyog | SQLyog for MySQL Administration

﻿ Configure SQLyog | SQLyog for MySQL Administration

Configuring the SQLyog user Interface

SQLyog gives an option to configure user interface by moving the Table Data/Info/History Tab to either the upper panel or lower panel. The setting is available in Tools-> Preferences-> General

Table Data/Info/History Tab displayed in Upper pannel

Table Data/Info/History Tab displayed in Lower pannel

In the rest of this documentation these 3 tabs will be shown in the upper panel.


Direct connection | SQLyog MySQL Front End

﻿ Direct connection | SQLyog MySQL Front End

Direct Connection using MySQL C API

This is by far the fastest way to connect and manage your MySQL server. This is the preferred method if you are not concerned about your MySQL traffic being spoofed. However, this requires direct access to your MySQL server.

To connect using this method, just select MySQL tab in the connection window. Fill in all the details about the server you want to connect i.e. host address, user name, password and the port number. If you don't give any details SQLyog will try to connect to localhost with the default user as root and port number 3306. You must connect to a MySQL Server before you can perform any activities with the software. SQLyog's connection manager lets you to save unlimited Connection Details.

After you have connected to an instance of MySQL, you can make additional connections by selecting the New Connection option from the File menu.

Saved Connections | Select the connection name from the list. To rename a saved connection, click on the Rename button and edit the connection name and click save option to save the changed connection name. Other details can also be changed by selecting the particular connection, changing the necessary values and then by clicking on save to save those values.
MySQL Host Address | Specify a host name where the database is situated or the IP address of the server.
User Name | Specify a user name for connecting to the database server. Note: This is MySQL username. Not your FTP or web server username.
Password | Type MySQL user Password
Save Password | Check this option if you want SQLyog to save your MySQL password and to stop asking you to enter it in the future.
Port | Define a TCP/IP port for connecting to the database server.
Databases | Database name. You may enter several database names separated by semicolon (like db1;db2). If you do not enter the database name, all the database names would be listed, to select from.

Compressed Protocol: Do not take for granted that use of compressed protocol will always increase performance. Use of compressed protocol will decrease the amount of data to be transferred over the network, but it will result in additional load on both the server and the client (compressing and uncompressing). You should preferably not use the option when connecting to MySQL on local machine, on local network or over a very fast Internet connection. With slower network however it may improve the overall performance. It is impossible to be more specific as most Internet connections have asymmetric properties that differ across Internet providers and telecom companies.

Session Idle Timeout: The option to define timeout for the session (different from the global setting) is possible with MySQL servers from 5.0 and up. However, most users will need not to care about it - not even if server timeout setting is low. SQLyog will reconnect if connection was lost since last query was run. Most often user does not even notice. However, we have reports of situations where the network takes very long time to process such reconnect request. In this situation setting the timeout from the client will prevent the situation. Also SSH-users connecting to SSH servers/daemons that are slow to establish connection and where MySQL has a low timeout setting can use this option with advantage.

If you don't give correct details, SQLyog will not be able to establish the connection. And if some user details are entered that have not been created in the MySQL user table MySQL will refuse the connection. If you install your own MySQL server there will be a 'root' user (with no password) available from the start. If you use a server hosted by an ISP (Internet Service Provider) you should have your user details from there.


SSH Tunneling | SQLyog MySQL Client

﻿﻿ SSH Tunneling | SQLyog MySQL Client

Connecting using SSH Tunneling

What Is SSH?

The Acronym SSH stands for Secure Shell Host. There are a couple of ways that you can access most systems. The most common way is to use a telnet program such as the one called telnet (for Unix and Windows). Accessing a shell account in this fashion though poses a danger in that everything that you do over that telnet session is visible in plain text on your local network, and the local network of the machine you are connecting to.

As one solution SSH was created to encrypt the data being sent over the network as well as provide an option that prevents passwords from being ever passed over the network. SSH can use several different forms of encryption, anywhere from 56 to 1024 bit. SSH has been ported to Operating Systems on several platforms including Linux, Microsoft Windows and Macintosh.

What Is SSH Tunneling?

SSH can be used to encrypt communications between SQLyog and your remote MySQL server. This is known as SSH tunneling and is actually quite simple to use.

Benefit of SSH Tunneling

Many hosting companies that provide MySQL hosting will block access to the MySQL server from outside the hosting company's network, and only grant access to users connecting from localhost or from a machine within the network. The major benefit of SSH tunneling is that it allows us to connect to a MySQL server from behind a firewall when the MySQL server port is blocked. As long as the hosting company provides SSH access, you can still connect through SQLyog SSH Tunneling option.

Setting up SQLyog for SSH Tunneling

Select SSH tab in the connection window.

SQLyog gives you the option of using either password authentication or private/public key authentication with SSH tunneling. Most users use password authentication. The details for this option are:

Username | Username to access the SSH server (Note: not the MySQL server).
Password | Password to access the SSH server (Note: not the MySQL server).
SSH Host | Address of the machine on which SSH server is running.
SSH Port | Port on which SSH server is listening. By default, it is 22.

To understand the setup better, let us connect to a MySQL server using a real life example.

E.g. Your website is hosted on 234.56.65.78. This server also has SSH server running and listening on port 22. Your MySQL server is located on server 234.56.65.79. This machine only allows connection from localhost or machine within the same network (e.g. 234.56.65.78). You publish your website on 234.56.65.78 using the username and password provided by your ISP. Ex. the username and password provided is ssh_user and ssh_pwd respectively.

In this particular case you have to put in the following value for various options:

MySQL Tab |
MySQL Host Address | localhost
Username | Your mysql user name.
Password | Your mysql password.
Database | The database that you want to connect to. You can leave this field blank.
Port | The port MySQL is listening. By default it is 3306.
SSH Tab |
Username | ssh_user
Password | ssh_pwd
SSH Host | 234.56.65.78
SSH Port | 22

Note that the MySQL Host Address is entered as 'localhost'. That will most often be the case. The MySQL server and the SSH daemon then runs on the same machine or at least the same protected network and some routing system on the network takes care of the rest. You could in principle enter '234.56.65.78' for the MySQL server as well but in some cases the SSH configuration will not allow for the use of a 'global ip'. Finally you could need to enter '234.56.65.79' if the SSH daemon runs on '234.56.65.78' and the MySQL server on '234.56.65.79'. But note then that all communication between the machines '234.56.65.78' and '234.56.65.79' is not encrypted. As long as they both are on the same protected network it is normally not a problem. But connection from the SSH daemon running on one server to a MySQL server outside the protected network can be. That will however also only be needed in very special situations. And if you need to do so, you probably need not read this!

The public/private key authentication adds an additional layer of security. If you check this option you must still provide a password (what is now named a 'passphrase') and you must enter the path and name of the file that contains your private key. To have your account set up for public/private key authentication you should contact your System Administrator. Key files to be used with SQLyog must be in .ppk -format (same format as used by the SSH shell program 'Putty').

Note: This feature is available in SQLyog Professional, Enterprise and Ultimate.


HTTP Tunneling | SQLyog MySQL Client

﻿ HTTP Tunneling | SQLyog MySQL Client

Connecting using HTTP Tunneling

This option saves your day if your ISP/MySQL provider disallows remote access, either by blocking the MySQL port or by giving access to “localhost” only. The response is slow compared to the direct connection or SSH Tunneling method as the data is XML encoded and HTTP is stateless by nature. However, you can use all the cool features of SQLyog.

To use this method, just upload SQLyogTunnel.php to your webserver. SQLyogTunnel.php is available in the SQLyog installation folder. SQLyogTunnel.php exposes the MySQL API as a set of web-services which is used by SQLyog.

Select the HTTP tab, check Use HTTP Tunneling option and provide the URL of the tunneling page. Just make sure that the MySQL Host Address you provide in Server tab is accessible from the Tunneling URL.

Ex. Your webserver and MySQL is hosted on 234.56.45.21, and then you need to specify localhost in the MySQL Host Address field of Server tab instead of 234.56.45.21.

If you access internet over a proxy server or the SQLyogTunnel.php is hosted in a password protected server then you can provide the required authentication details by clicking on the Advanced button.

The content-type option was added in 6.5. Most users will not not need to care about this as they most often will all work, but in some situations a special HTTP format is required. Known situations are:

  • With Apache and mod_security extension enabled in Apache configuration it may be necessary to use 'urlencode'

  • With IIS running on Windows Server 2003 some PHP editions will fail to connect with 'urlencode' setting.

  • Open source webservers (like Apache, Lightttpd) may have been built with some code change (or 'hack') blocking certain HTML content-types.

Also added an option to use Base64 encoding for communicating XML data stream with the HTTP tunneler.

Note that you may rename the tunneler file to any filename and extension that the webserver/PHP configuration accepts as a valid PHP file. Though the risk that the tunneler can be misused is very low (as it will only work with SQLyog and SJA and not from a browser, command line or any other client) it is theoretically possible for anybody having SQLyog or SJA to attempt to connect to your database. Also a 'brute attack' (attempt to crack password or just creating a denial-of-service situation) is (depending on configurations on the server) theoretically possible with an application calling SJA recursively with different authentication parameters.

Connecting using HTTPS Tunneling

Upload the Tunneler to your webserver supporting HTTPS. In the URL field, provide the correct HTTPS URL.

NOTE: This feature is available in SQLyog Professional, Enterprise and Ultimate.


Uploading SQLyogTunnel | SQLyog MySQL Tool

﻿ Uploading SQLyogTunnel | SQLyog MySQL Tool

Uploading SQLyogTunnel.php

This tutorial takes you through the steps for uploading SQLyogTunnel.php to your webserver.

First of all you need a FTP client to connect to your webserver. We are going to use CuteFTP 4.2 in this tutorial. You can use any FTP client you are comfortable with. Most ISP also have some FTP transfer option integrated in the Control panel application that every user has access to

After starting up your chose FTP client, you need to define your website i.e. give the details of your webserver.

What comes next can look somewhat different with different FTP clients. But the basic information and options will be available in some form. In CuteFTP you will get a window with two panes on successful connection. Left hand window will show the contents of your local directory and right hand the remote directory.

Follow the given steps to upload SQLyogTunnel.php:

  • Change the local directory to the installation directory of SQLyog.
  • Change the remote directory to one where you want to upload the PHP file e.g. tunnel. You can create a new directory by right-clicking and selecting Make New Directory... from the popup menu.
  • Drag SQLyogTunnel.php from the left window to the right window.


SSL Tunneling | SQLyog MySQL Client

﻿ SSL Tunneling | SQLyog MySQL Client

Connecting using SSL Encryption

What Is SSL?

The Acronym SSL stands for "Secure Socket Layer". If enabled on both sides when two programs communicate it will encrypt and decrypt every piece of information that is transmitted. The SSL client code that is compiled into SQLyog ensure that it can communicate with a MySQL server using SSL, if the server also supports SSL.

Not every MySQL server does. When the server is compiled there is an option to compile with or without SSL. Some of the binaries distributed by MySQL have SSL others have not - depending on the version and for what platform it is compiled. Also on some Linux/Unix 'flavours' it is common that the System Administrator compiles the server on the computer itself where is shall run. He may then or may then not compile with or without SSL support.

Note that SSL-connections are not TUNNELING. No other program than SQLyog, no other server than the MySQL server and no other port, than what MySQL is configured to use, is needed for the connection.

To find out if you can connect to your server with SSL, you must check the Server system variable 'have_openssl'. If it is "YES" you can use SSL connections, if it is "DISABLED", SSL is available but not enabled in the Server configuration, and if it is "NO", the server binary that you use does not support SSL.

If the 'have_openssl' system variable is "YES" you will still need to create a user for the SSL connection. The same user must use SSL connections only or not at all - he cannot use both! Simply because the login information is also encrypted by the SSL layer before it is sent to the server! To create such user use the "GRANT .... REQUIRE SSL" syntax . For instance,

GRANT ALL ON *.* TO 'root'@'%' REQUIRE SSL WITH GRANT OPTION

... will create a remote ROOT user that can only connect with SSL and has privileges similar to 'root'@'localhost'

In the Connections Manager's SSL tab a valid path and file for the ca-certificate is required, all other values are optional. 'Cipher' must be either "DHE","RSA","AES256" or "SHA". If omitted the system will 'pick one'. The 'Client key' and 'Client Certificate' must match similar Server Certificates (on the server itself). You should ask your System Administrator for those files. If you are administering your own Linux/Unix server there most likely is a program available for generation of all the files. Also note that SSL-certificates will expire and will need to be renewed from time to time.

Note: This feature is available in SQLyog Professional, Enterprise and Ultimate.


Advanced Connection Settings | SQLyog MySQL Manager

﻿ Advanced Connection Settings | SQLyog MySQL Manager

Advanced Connection Settings

In the 'Advanced connection settings' tab you can define a color that identifies this particular connection. The color is used as background color in the Object Browser.

Also, you can change from Object browser's context menu 'Change Object Browser Color'.

SQL Mode

The connection manager has an option for the user to define a SQL_MODE for a connection. By default the mode is '' (empty mode). If the user wants an "empty SQL_MODE " for a connection he just leaves the SQL_MODE value blank. If he wants a specific mode he may enter a valid SQL_MODE string (not enclosed with in quotes). A combination of valid SQL_MODE string's need to be seperated by a comma. Also note that not all SQL_MODEs will work with SQLyog GUI. This includes all mode using "ansi_quotes" and the "no_backslash_escape" mode.

If user wants to respect the global mode then the "Use global value" check box needs to be checked and the mode set for that particular server will apply for the SESSION. The SQL_MODE option is not supported in HTTP connection.

Init Command

The connection manager has an option for the user to define a MySQL init-command for a connection. This is an option (per connection) to define a query (or more queries) that will be sent when SQLyog connects (and reconnects). User can enter multiple valid command's saperated by a semicolon.

It is not the purpose of this option to return data. If you specify a statement that does (a SELECT or SHOW statement), the data returned from the query will not be displayed. The reason is that INIT_COMMANDS are executed not only when SQLyog connects first time but also if it reconnects.


Export/Import Connection Details | SQLyog MySQL GUI

﻿ Export/Import Connection Details | SQLyog MySQL GUI

Export/Import Connection Details

SQLyog allows you to export/import your connection details. Exporting enables you to transfer connection details to other machines that you can later import into SQLyog. You can export/import connection from the Tools->Export/Import Connection Details

Export Connection Details

To export connections go to Tools->Export/Import Connection Details->Export Connections. This will open a dialog with connection details, where you can select the connections to be exported.

Import Connection Details

To import connections go to Tools->Export/Import Connection Details->Import Connections. Click Open File->select the file to be imported and click on import.

Note: In case of conflict in connection name, if the connection detail of importing connection with same name as that of existing connection, connection name of importing connection will be appended as _(n) where "n" is next available number.

Example: If a connection with the name "Production" is present in both existing and importing connection then importing connection will be imported with connection name "Production_(1)"


SQLyog User Interface | SQLyog MySQL Manager

﻿ SQLyog User Interface | SQLyog MySQL Manager

SQLyog User Interface

After you have established a connection you will get a window like -

Title Bar

The title bar shows the connection name and the host name of current connection.

Object Browser

More information on Object Browser can be found here.

SQL Window

More information on SQL Window can be found here.

Current File Name

If the script in the active tab of the SQL Window was saved in a file, the file name is displayed here.

Result Window

More information on Result Window can be found here.

Status Bar

The status bar is divided into 5 parts showing information about -

  1. General Information: Information about work being done in SQLyog, description of the menu item selected.
  2. Process Time: Time taken (in hh:mm:ss:ms) to execute the query i.e. Execution time and Total time. Note: In HTTP connection only Total time is displayed.
  3. Number of rows in the currently selected Resultset.
  4. Line number and column number in which the cursor is located in different Edit windows.
  5. Number of connections which have been made in SQLyog.

Tabbed Interface For Connections

Tabbed interface lets you open connections in separate tabs, so that you can jump between them quickly and easily. Tabs will be colored (if chosen) like the Object Browser. To switch between tabs use the shortcut keys Ctrl+n where n specifies the tabs no (e.g. Ctrl+1, Ctrl+2 etc). Ctrl + 9 shifts the focus to the last tab in the connection level irrespective of the number of tabs present.

NOTE: Drag and Drop of connection tabs(when there are multiple conncetions)and query level tabs is possible.

Also note that Tool tip is implemented for the query level tabs. When you roll the mouse over a tab, it shows the name of the corresponding tab and if a file is opened in the tab then it will show the fully qualified name of that particular file.


File Management | SQLyog MySQL GUI

﻿ File Management | SQLyog MySQL GUI

File Management

SQLyog provides all file handling capabilities in a convenient manner.

Opening a File to load a script in Same tab
Click File -> Open File in Same tab (or press Ctrl+Alt+O). The Open... file dialog appears through which you may load a script from a file in same tab.

Opening a File to load a script in New tab
Click File -> Open File in New tab (or press Ctrl+O). The Open... file dialog appears through which you may load a script from a file in new tab.

Saving the script in a File
 Click File -> Save (or press Ctrl+S). The Save As dialog appears through which you may select an existing file into which you like to save the SQL script.

Saving the script in a new file
 Click File -> Save As. The Save As dialog appears through which you may specify a filename into which you like to save the SQL script.

Recent Files
Click File -> Recent SQL Files… shows the list of recently opened SQL script files (else displays No Recent Files).

Recent Schema Design Files
Click File -> Recent Schema Design Files… shows the list of recently opened Schema Design XML files (else displays No Recent Files).


Favorites | SQLyog MySQL Tool

﻿ Favorites | SQLyog MySQL Tool

Favorites

SQLyog allows easy access to frequently used SQL scripts. The script files can be stored as files from the SQLyog interface or you can link to an existing file anywhere where windows can access it - on a local drive or a shared network drive. The SQL scripts and the file links can be organized in folder and subfolders. The number of script files and file links and the number of nested folders you can manage is limited by an Operating System and the File System only.

Adding Items to favorites

This feature is available from the menu. To add an item you can also use the Ctrl+Shift+F keyboard shortcut.

Inserting From Favorites

To insert a favorites to the SQL-editor just click 'Favorites' in the menu, navigate to an appropriate folder and click the name of the 'Favorite'.

Managing Your Personal Folder

You can manage (organize folders, files and links and delete) your favorites from the Menu -> Favorites -> Organize Favorites. Just click any item and next the appropriate button in the dialogue.


Object Browser | SQLyog MySQL GUI

﻿ Object Browser | SQLyog MySQL GUI

Object Browser

This window gives you complete details of the server you are connected to in a tree format. Expanding database node will show the table(s), view(s), store procedure(s), function(s), trigger(s) and event(s) in the database and expanding the table name node will show the columns and indexes available for the table. You may Show/Hide Object Browser through Ctrl+SHift+1 buttons.

When you right click on any object in the Object Browser, you will get a context sensitive popup menu. The options in the popup menu allow you to perform different operations on the selected object.


SQL Window | SQLyog for MySQL Administration

﻿ SQL Window | SQLyog for MySQL Administration

SQL Window

Here you write your SQL commands that you want to execute. There are various ways to enter SQL in the window:

  • Type SQL commands directly in the window.

  • Open a saved SQL script file. The file will be opened for editing.

  • Insert a template from Edit/Insert Templates option.

  • Open a SQL script saved as a 'Favorite'. More about 'Favorites' folders later.

Multiple Queries

You may enter multiple queries separated by a (;) - on the same line or each on their own line. Each query would create a new tab for its resultset in the Result Window.


Executing SQL Queries | SQLyog MySQL Tool

﻿ Executing SQL Queries | SQLyog MySQL Tool

Executing SQL Queries

You can execute queries in SQLyog in following four ways:

  • Execute Current Query: To execute a particular query in a batch, just place the cursor on the query to be executed (i.e. before the semicolon separating the query from the next query). Select Edit -> Execute Query -> Execute Current Query (or press F9 or click the 'single green arrow' icon in the icon bar). Only the current query would be executed.

  • Execute All Queries: To execute the whole batch of queries entered in the SQL window. Select Edit -> Execute Query -> Execute All Queries (or press Shift+F9 or click the 'double green arrow' icon in the icon bar). All queries would be executed one by one, showing resultset in separate tab window.

Note: Default is F9 for execution. It can be toggled between F5 for executing SQL queries. For more information see Preferences.

Stopping a Query

Starting from v4.05, all the queries are executed in a different thread. Whenever you execute a query the corresponding icon in the toolbar is replaced by a Stop icon. If you want to stop a query from being executed, just click on the Stop button.


Syntax Highlighting in SQL Window | SQLyog GUI for MySQL

﻿ Syntax Highlighting in SQL Window | SQLyog GUI for MySQL

Syntax Highlighting in SQL Window

For ease of use, components of an SQL query are shown in different colors. There are certain SQLyog defaults, but you can setup your own highlight fonts and color scheme by using the Preferences dialog (Tools -> Preferences).

In the dialog, switch to the Fonts and Editor Settings tab and define coloring as it is suitable for you.


Show Hide SQL Window | SQLyog MySQL Tool

﻿ Show Hide SQL Window | SQLyog MySQL Tool

Show/Hide SQL Window

Select Edit -> Hide SQL Editor (or press Ctrl+Shift+3) to toggle Show/Hide SQL Editor Window.

However, at least one of the window (SQL Editor, Result Set, Object Browser) will be visible (you cannot hide all of them).


Database Connection | SQLyog MySQL GUI

﻿ Database Connection | SQLyog MySQL GUI

Database Connection

Making a New Connection

After you start SQLyog, you have to enter the details of MySQL server you want to connect to. You must connect to a MySQL server before you can perform any activities with the software. Check out more how to make a database connection.

New Window Using Current Settings

To open a new connection with same server profile of the current connection select File -> New Window Using Current Settings (or press Ctrl+N). It will establish another connection with the same details without any further specification.

Disconnecting A Connection

Select File -> Disconnect (or press Ctrl+F4) to disconnect the current active connection. To re-connect (or establish another connection), select Connect option (or press Ctrl+M).

Disconnecting All Connections

Select File -> Disconnect All to disconnect from all current active connections.


Multiple Editor Tabs | SQLyog MySQL Client

﻿ Multiple Editor Tabs | SQLyog MySQL Client

Multiple Editor Tabs

With SQLyog you can enjoy a great feature of multiple editor tabs in the SQL window. You can open several files at the same time and logically separate your queries between the tabs. Press Ctrl+T to open a new SQL editor tab or just double click in the unused space to the right of existing open tabs. Focus can be changed between editor tabs using Ctrl+Page UP and Ctrl+Page Down buttons and the active editor tab can be close with Alt + L.

You can also take advantage of special template-filled SQL window tabs when creating or altering objects: views, stored procedures, functions, triggers or events. On each of these actions (if called via the main menu, item Objects) a dedicated tab will appear providing a template for the selected object and action. The object's name will appear in the tab caption.


QUERY and RESULT tabs | SQLyog MySQL Tool

﻿ QUERY and RESULT tabs | SQLyog MySQL Tool

The relationship between the Query Editor tab and Result tabs

The relationship between the QUERY Tabs and the different Tab views in the - lower - DATA area is basically a parent-child relationship.

For every QUERY tab there can be a number of RESULT tabs that correspond to the number of queries last executed from that QUERY tab. Every Query tab also 'owns' its own MESSAGES, DATA.

So whenever you need to keep the result(s) of a query available then simply just do not execute any more queries from the same query tab and you will always be able to view the result(s) of the first query again - including the related Table DATA view, MESSAGES- by clicking the QUERY tab that is the 'parent' of the RESULT tab that you want to view.


Advanced Editing Features | SQLyog MySQL Manager

﻿ Advanced Editing Features | SQLyog MySQL Manager

Advanced Editing Features

  • Select Edit -> Advanced to take advantage of the following useful editing features (or press the respective keyboard shortcut).

    • Make Selection Uppercase: To change selected text to uppercase (or press Ctrl+Shift+U)

    • Make Selection Lowercase: To change selected text to lowercase (or press Ctrl+Shift+L)

    • Comment Selection: To comment the selected text (or press Ctrl+Shift+C)

    • Remove Comment From Selection: To remove the comment (or Ctrl+Shift+R). The commented line is uncommented.

  • Select Edit -> Go To, to quickly move to a required line in the SQL Window. This is a great feature for using in large scripts.

  • Use double-click in the Object Browser to pass the object's name to your script in the SQL Window. Make sure that the corresponding option in Preferences (tab General) is switched on.


SQL Templates | SQLyog MySQL Front End

﻿ SQL Templates | SQLyog MySQL Front End

SQL Templates

In SQLyog, you get ready templates for all the SQL statements supported by MySQL. Select Edit -> Insert Templates (or press Ctrl+Shift+T).

Now select the SQL statement to insert the template and click Insert button. The template is copied in the query Window. Now, you may modify the SQL statement as necessary.


Auto Complete | SQLyog MySQL Manager

﻿ Auto Complete | SQLyog MySQL Manager

Autocomplete

The purpose of the autocomplete feature of SQLyog is to make it ease to type any type of database object (tables, columns etc.) names, and the names of MySQL keywords and functions. The feature makes use of a small database engine that is built into SQLyog. SQLyog is shipped with a database with the names of MySQL keywords and functions and for every connection that it uses it will retrieve and maintain a list of the object names for each connection.

Also with long and/or awkward object names this feature reduces the possibility of misspelling and thus saves you time and reduce the risk of accidentally executing wrong queries and reaching wrong conclusions.

Autocomplete basically functions in four and independent different ways.

1) 'Auto-popup' or 'tooltip'.

Whenever you type in an object name followed by "." the available object in the level below will pop up in a small window from where you can select using arrow-keys and ENTER. For instance try typing a database name like "mydb." to see the list of tables in the 'mydb'-database. And type a "mytable." and a list of columns in that table is displayed. Also typing the name of a function followed by "(" will display the parameter list of that function. Try typing "ABS(" yourself.

Finally when only one possible match is left, autocomplete will tell you and you only need to press TAB to insert.

2) TAB-key functionality.

Try highlighting a database in Object Browser and type in a single or a few characters in the editor pane. For each time you press the TAB key autocomplete will switch between all possible inputs starting with this/these character(s). These inputs are functions, keywords and database objects from the selected database as well.

3) CTRL+ENTER functionality.

As above type in a single or a few character(s) in the editor pane. Press CTRL+ENTER and a small window opens with a list of keywords and functions starting with this/these character(s). Cursor must be placed in editor window. Use arrow-keys to select one, press ENTER and the selected one is inserted.

4) CTRL+SPACE functionality.

When cursor is placed in the editor pane pressing CTRL+SPACE always opens a small window with a list of ALL keywords and functions. As above use arrow-keys to select one, press ENTER and the selected one is inserted.

5) CTRL+SHIFT+SPACE functionality.

Ctrl+Shift+Space keyboard shortcut that will display the parameter-list of a routine when the cursor is positioned inside it. While writing a routine call the parameter list will highlight the current parameter.

ALSO NOTE: From version 6.5 Autocomplete supports table aliases and column aliases. Try this by typing,

"SELECT `somecol` as ourcol from `sometable` as mytab where mytab.somecol Groupby our"

... and now you will see that all Autocomplete functionalities identify 'mytab' as a valid table name and 'ourcol' as a valid column name (for that statement) matching the substring for the table/alias "my" and column/alias name "our".

Autocomplete supports both table-alias'es and column-alias'es in SELECT, UPDATE and DELETE statements with the current exceptions, where it is still not supported:

-- SELECT statement used to specify an value for INSERT (like "INSERT INTO mytab (col1) values ((SELECT ...))")

-- SELECT statement used as argument to a function (like "SELECT IF((SELECT ....),'true','false')")

  • Table Alias:

  • Column Alias:

 Note: This feature is available in SQLyog Professional, Enterprise and Ultimate.


SQL Window | SQLyog for MySQL Administration

﻿ SQL Window | SQLyog for MySQL Administration

Formatting SQL Queries

SQLyog has an ability to format the SQL displayed in the active QUERY tab. You may format a single query only or the complete content of a QUERY tab. Formatting will help you to understand the structure of a complex query. If you have been working on a query (editing and copying) it will not always be well-formed. That you can corrrect with a single click. This is also useful if you want to save a query (as file or 'favorite') or if you want to use the query in an application.

First you should go to Tools -> Preferences -> SQL Formatter and define how you prefer your queries formatted. Once that is defined you will find the formatting option:

  • In the edit menu

  • Editor context menu

  • You can also format queries using keyboard shortcuts in following three ways:

-- Format Current Query: To format a particular query in a batch, just place the cursor on the query to be formatted (i.e. before the semicolon separating the query from the next query). Select Edit -> SQL Formatter -> Format Current Query (or press F12). Only the current query would be formatted.

-- Format Selected Query: To format a selected query(s) in set of query(s), select the query(s) to be formatted. Select Edit -> SQL Formatter -> Format Selected Query (or press Ctrl+F12).

-- Format All Queries: To format the whole batch of queries entered in the SQL window. Select Format -> SQL Formatter -> Format All Queries (or press Shift+F12).

Just select 'Format' or 'Format All' and the query will be formatted as you have defined it. For instance this query,

could be formatted like this,

Note: This feature is available in SQLyog Enterprise and Ultimate.


Parenthesis Matchinr for | SQLyog MySQL Tool

﻿ Parenthesis Matchinr for | SQLyog MySQL Tool

Parenthesis Matching

In the editor you may find the parenthesis/bracket matching one another by simply positioning the cursor after a bracket. The actual bracket and its match will be highlighted.

Note that this feature will work with any string - whether it is a valid SQL string or not. Different kinds of parenthesis like plain parenthesis, square brackets and curly braces are supported (independently of each kind).


SQLyog Query Builder | SQLyog MySQL Management Tool

The SQLyog Query Builder

SQLyog provides you with a powerful GUI (graphical) Query Builder. The Query Builder is a 'special TAB in the SQL editor area of the program. When the program opens it will display one such tab. You can add more from the 'file' and the 'powertools' menu.

The Query Builder TAB is divided into 3 sections:

  • a 'canvas' (a drawing area)

  • a GRID area

  • a (read only) editor area

You can move the 'divider' between those three areas to fit the needs of the individual queries that you are building.

Also note that there is one setting in 'Preferences' that affects the behavior of the Query Builder: you can choose to use `backquotes` to enclose table and column names or not. You need to use `backquotes` in some special cases: for instance if the name of a table or column is a word that has a special meaning in MySQL (a 'reserved word'), like for instance the words 'select', 'table', 'begin' etc. Also if one or more names starts with a number or contains special characters you may need depending on the MySQL version. Using `backquotes` is SAFE, but some users think that they make queries hard to read.

To start building a query use the mouse to drag the tables that shall be used for this particular query from the Object Browser into the canvas of the Query Builder. You can arrange them and resize them as you want. If some lines occur between two of the tables it is because there are Foreign Keys defined between those tables. The line indicates a SQL JOIN. It is reasonable to think the columns 'related' by defining a Foreign Key should be JOINed. So, SQLyog will propose you that. You can right click on the line and define the properties of the JOIN or delete it if you want.

To define JOINs that are not defined 'implicit' in the database schema itself as Foreign Keys, you just draw a line with the mouse between the two columns that shall be JOINed. So JOIN is possible too with table types that do not support Foreign Keys.

Note that (from version 6.5) also VIEWs are supported by the Query Builder. You operate them completely identically. In the following the term 'table' refers to both tables and VIEWs!

Table Alias: When table is added to the canvas more than once, a table alias is generated for second and following instances and the alias is used by Query Builder in queries. Also, you may define a table alias yourself for any table by double-clicking the title bar of the table symbol ('box'). The table alias will display in the title bar with the table name in <brackets>.

Once the tables are dragged into the canvas and the JOINs properly set up start selecting the columns that shall be included with the RESULT of the query. There are three ways to do this:

  • Selecting the table and the column in the GRID by using the drop-downs for 'table' and 'column'.

  • Dragging a column from the canvas into the GRID. This (data) column will be added before the (GRID) column where you pull it.

  • Double-clicking a column of a table in the canvas. The column will be added at the end/right of the GRID.

Now the Query Tab will look like the image below. Note that a query is already generated and displayed in the Query Builder editor area. This is a simply query only doing SELECTs on the columns that you have chosen to display in the GRID JOINing the columns with the JOIN type that you selected.

You can copy the generated query from the Query Builder editor area to a 'common' or 'normal' Query Tab from where you can execute and do anything else you would do with a query that you had written yourself. You can also copy to the clipboard. The icons just below the GRID are for those copy operations.

In the image above you also see that changing a JOIN type or deleting line representing a JOIN from the canvas is done by right-clicking on the line itself, and selecting from the context menu.

Note that LEFT and RIGHT JOINs have a different meaning depending on the direction of the JOIN. LEFT JOINing table a on table b returns the same as RIGHT JOINing table b on table a (and vice versa). With INNER JOINs the result is the same. The JOIN direction is decided by the program from recording in which direction the line in the canvas was drawn. If you are not very familiar with JOINs it will probably be a good idea always to use a fixed procedure: for instance consider always having 'child' tables to the left of 'parent' tables and always draw in the canvas from left to right. Lines drawn by the program itself (due to the existence of Foreign Keys) will always be considered as being drawn from 'child' to 'parent'.

Also note that the SQLyog Query Builder updates the displayed query 'in real time' - that is whenever a column is added or removed from the GRID or any kind of parameter is entered in the GRID, the query is updated at the very moment that the cursor leaves that cell of the GRID where you added or changed something.

Finally, note that you can INSERT or DELETE a complete column in the GRID by right-clicking on the small rectangle on the top of each column.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Query Builder sort and filter | SQLyog MySQL Client

Query Builder: Sorting and Filtering

To generate a usable query the example shown on the previous page will need to have 'something' added. At least you would probably SORT and FILTER the data shown in the resultset using the SQL 'ORDER BY' and 'WHERE' clauses.

Sorting: To define the sort order of data you enter a number in the 'sort order' row of the GRID. The lowest number will be the sort criteria given highest priority (the fist column in the ORDER BY clause). The 'next-lowest number will be the sort criteria given 2nd priority and so on. For every column that shall be sorted you also enter if sorting on that column shall be done Ascending or Descending.

Filtering: Filtering data is done by entering criteria in the 'criteria' rows of the GRID. You can use all operators recognized by MySQL like ">" (greater than) for numbers and time-type variables, "LIKE 'something'" for strings, "IS (NOT) NULL" for all types of data etc. If you add more criteria, criteria in the same row of the GRID will be logically 'AND''ed' while criteria added in different rows of the same column of the GRID, the resulting criteria for each row will be logically 'OR'ed'.

The example below illustrates all this:

In this example we first sort descending on 'release_year'. For those data in the result where 'name' is the same the 4th sort order takes effect: they will be sorted (ascending) on 'film_id'. And if there should be some data having the same values for both 'release_year' and 'film_id' the result will be sorted alphabetically on 'film'.

In this example 'release_year' is a YEAR type. So if we only want to display data related to 'film' whose 'release_year' in the year of 2009 and before we can use the criteria '<=2009-01-26'.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Query Builder using Functions | SQLyog MySQL Tool

Query Builder: Using Functions

When generating a query you can use any function that MySQL supports. An example:

There are two examples of use of functions here.

The first (and simplest) example is that we no longer have selected just the 'special_features' column of the 'film' table, but a function like 'substr( `special_features`,1,10). This will return a string up to 10 characters starting with the first character of the special_features, but if the `special_features` is longer than 10 characters only the first 10 will be returned. This may make the result look better, and it will be easier to use the result in text and copy it to some kind of document. You will probably recognize the customer from the first 10 characters of his name!

To change from the name of the column itself to a function on that name you just click twice in the cell of the GRID where it displays and edit it. You may even write functions inside other functions and use expressions too like 'truncate(mycolumn,0)+1'. This will (on) return the 'lowest' INTEGER number 'higher' than the actual value DECIMALS.

The second example is a little more complicated but not less important. Instead of filtering `release_year` on the 'year of 2009 and before' we want to filter on the 'year 2009 and only that year'. We could of course use a '>' and a '<' type of condition and AND those logically, but using the year() function on the `release_year` column would be much more readable. To filter on year() of that column without displaying the year() alone in the result we add a column more showing 'year(release_year)' and UNCHECK the 'SHOW' checkbox for that column. Compare the SQL above with that on the previous page.

This is the method you use whenever you want to sort (ORDER BY ...), filter (WHERE ...) on a column (or a function/expression on a column) without returning the value used for sorting or filtering in the result itself. Actually you can also do the same with the GROUP BY (see next page) so it might look like:

"SELECT a,b,c WHERE x {criteria} ORDER by length(y) ASC GROUP by z;" (in the example y is a string type)

Here all the columns a,b,c,x,y,z are added to the GRID, y is edited using the length() function but only the SHOW checkboxes for the a,b and c columns are checked, so only those will display in the result.

However GROUPING like this (GROUP BY a column not included in the SELECT clause) is considered 'bad practice' and experts disagree whether such construction is in accordance with SQL standards. With MySQL the situation is that recent versions support this, older versions don't (like most other database servers also don't).

Note: This feature is available in SQLyog Enterprise and Ultimate.


Query Builder: GROUP BY and aggregate functions | SQLyog MySQL GUI

Query Builder: GROUP BY and aggregate functions

Here we will discuss the use of the GROUP BY clause and the use of aggregate functions like COUNT(), MAX(), AVG() (average) etc. Using such functions in combination with criteria can be a problem for a lot of users. SQL defines a special construction (the HAVING clause) for handling criteria on those. Using this clause correctly - especially in combination with the GROUP by clause, 'common' functions and complex JOINs is 'too hairy' for many users - and many simply stayed away from that. That is a shame because these sort of queries can be very powerful - and in a single SQL statement you may be able to get a result directly that would otherwise take a lot of additional work or application code to retrieve!

With the SQLyog Query Builder it becomes very easy to handle this. The program decides which criteria will have to go into a WHERE clause and which must go into a HAVING clause. You won't have to think about different rules between 'common' and 'aggregate' functions - no matter if the column is used for sorting, filtering or used with a GROUP BY.

On the `actor_id` column we use the aggregate function COUNT() and a criteria at the same time. You see that this criteria goes into the HAVING clause and not the WHERE clause. The criteria on year(release_year) is (correctly) in the WHERE clause, however.

In this example you also see a GROUP BY clause on `substr(special_features....)`. That means that all rows having the same value for substr(special_features ....) will be GROUP'ed into a single line in the result. By using the MIN() aggregate function of the `release_year` we will ensure that the 'lowest' value for `release_year` will be displayed. As `release_year` is a DATE 'lowest' means 'first' in terms of TIME. In plain words this query will return a single line displaying the date of the first order to be delivered for every customer who has an order registered in the system.

We will study one more advanced example:

There are three things you should notice here:

First: you should note that in this example there is one column (ìtem_id) on which there simultaneously is used 'GROUP BY, a criteria, and aggregate function (COUNT()). No problem! Note that when using GROUP BY on columns where an aggregate functions is also used, SQLyog correctly does the GROUP BY on 'the column itself' and not on the 'aggregated column'.

Second: you should study the criteria entered in this example. There are quite a lot of them! First note that SQLyog 'keeps track of' which criteria shall be used with WHERE and HAVING respectively. The AND/OR rule of entering horizontally/vertically in the GRID as described before is applied to each of those two categories independently. So the two criteria like " 'sam%' " and " = 'ACADEMY DINOSAUR' " can safely be entered on the same line even if you do not want them logically 'AND'ed' if you are sure that they belong to the WHERE and HAVING clauses respectively. If you are not sure, then you may just as well enter each of them on their own separate line of the GRID. The resulting query will be the same.

Third: SQLyog Query Builder lets you specify an ALIAS (a 'nickname') for a column (or for a function/expression defined on a column). When executing the query the ALIAS will be displayed as the column header for the column in the result.

Lastly, also note that all over this chapter of the manual we have restricted ourselves to using examples with only two tables. This was done in order not to make an example graphics unnecessarily complicated, but rather to keep them as simple as possible. The principles are the same no matter if there are used 2 or 10 tables for the query. You can of course use as many tables as you like. The structure of JOINs handled by SQLyog can be a 'chain-of-JOINs' or a 'tree-of-JOINs' and every combination of the two. It is further a restriction that only tables from the same database can be JOINED.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Query Builder XML File | SQLyog MySQL Manager

Query Builder: XML File

From the Query Builder tab you can save your work to a file. The file will contain two types of information:

1) The position on the canvas and the size of the table symbol for every table that has been defined for this LAYOUT as well as the content of the GRID. This is used (of course) for populating the tab when opening a saved Query Builder XML file. When the Query Builder tab is selected the 'File' menu will by default handle Query Builder XML files for open, save etc.

2) When opening a Query Builder XML file SQLyog will verify that the file and the tables are 'in sync' (ie. the file does not reference objects that do not exist). Some other client or session may have changed (DROPPED or ALTERED) the table(s), since the file was last saved. In case they are found to be 'out of sync' the program will populate the canvas and the GRID with those objects referenced in the Query Builder XML file that exist in the database with a warning. Note that the resulting query may then be incomplete.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Results Tab | SQLyog MySQL Tool

﻿ Results Tab | SQLyog MySQL Tool

Result Tab

This window shows Results of Query which you can edit in an easy to use Excel like grid interface.

It also shows you information about Databases and Tables and all the query(s) that has been executed in the current connection. The window has three permanent tabs - Data, Object and History and three context specific tabs - Result, Profiler and Message. Profiler tab open if the Query Profiling feature is enabled.

When you execute a query that returns a resultset, a new Result Tab is added in the beginning of the tab window. If multiple queries are executed with multiple resultsets, multiple Result tabs would be created containing the resultset of the respective query. Therefore, the first tab will hold the result of the first query and second for the second query and so on. To view the results just select the respective tab. Multiple selection in the GRID is possible with Shift+Click.

Note that in SQLyog, MySQL result set can be updated from the RESULT tab. However in case you use an old MySQL server version (less than 4.1) or in case you use HTTP-tunnel please read this page explaining a rare but possible risk of data corruption in such cases.

Query Results may be viewed in 3modes - Grid Mode, Form mode and Text Mode. Select Edit -> Show Result/Table Data In Text (or Press Ctrl+L) to toggle between grid and text mode or between form and text mode. To switch between resultsets use the shortcut keys Alt+n where n specifies the resultset no (e.g. Alt+1, Alt+2 etc.).

Also the RESULT tab can display in 'paged mode or non-paged mode' as per your settings in the Tools -> Preferences -> Others -> Result tab pages. It works like this when the setting is ON: If user executes a SELECT query without an explicit LIMIT clause SQLyog will add a LIMIT clause to the original query so that the number of rows specified in preferences will display. Next use the arrow-buttons on top of the GRID to view more 'pages' of the result. Note that if user enters his own LIMIT clause SQLyog will never add one. For queries with subqueries is the 'outer query' that decides. In other words: automatic paging does not have effect for a query like this (as there is user-defined LIMIT in 'outer query').

SELECT ... FROM (SELECT ... FROM ...) LIMIT 20;

but has for this (user-defined LIMIT in 'inner query' only)

SELECT ... FROM .. WHERE ... = (SELECT ... FROM ... LIMIT 200);

To execute the same query with another (outer) LIMIT you will not need to retype the query as you may enter the new LIMIT in the textboxes above the GRID and click 'Refresh'. Note that if 'Retain query page value' is selected in preferences the last value used for LIMIT is stored and used by SQLyog next time the same query is executed against the same table (provided that paged mode is ON).

When automatic paging is OFF or disabled due to a user-defined LIMIT the respective controls are 'greyed out' and disabled.

You may Show/Hide Result Window through Ctrl+SHift+2 buttons.

If you double click on a BLOB column, SQLyog would try to parse the BLOB data to find out whether it is a valid text/image file and then display the contents in a modeless dialog. All popular file formats like (GIF/JPEG/PNG) are supported.


Results In Grid Mode | SQLyog MySQL Manager

﻿ Results In Grid Mode | SQLyog MySQL Manager

Results In Grid Mode

You see the results in Excel like rows & columns. You may click on the header to sort the results of column. This sorting is done on the client side without sending any query to the MySQL server.

Toggle between Grid Mode and Text Mode by pressing Ctrl+L.


Results In Text Mode | SQLyog MySQL Manager

﻿ Results In Text Mode | SQLyog MySQL Manager

Results In Text Mode

You see the results in Text with each column separated by a Tab. Viewing result sets in text mode is useful to cut and paste plain text into another application. While viewing a result set in text mode, you can also search for a particular string in the resultset by selecting Edit -> Find (or press Ctrl+F/F3) from the menu.

Toggle between Grid Mode/Form mode and Text Mode by pressing Ctrl+L.


Results In Form View | SQLyog MySQL Manager

﻿ Results In Form View | SQLyog MySQL Manager

Results In Form Mode

The form option displays the current record: with all the field names on the left and the corresponding values on the right. It is possible to view an entire row of data at once. Inserting a new row, updating an existing row, deleting and filtering are possible. The navigation options at the bottom of the form allow you to browse successive records as well as goto the very first and the very last record. The context menu (generated on right click in form mode) provides options to perform custom filter, set the cell value to Empty / Null / Default, Export Copy, Duplicate the current row, Delete selected row, Cancel and Save changes. You can enable the Form view by selecting the form option in the data tab.

Toggle between Form Mode and Text Mode by pressing Ctrl+L.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Datetime | SQLyog GUI for MySQL

﻿ Datetime | SQLyog GUI for MySQL

Managing DATE, DATETIME and TIMESTAMP data

On double click in a cell in the data GRID and on click on the calendar icon in FORM-view, a calendar control for managing DATE, DATETIME and TIMESTAMP columns pops up. In GRID-mode it looks like this:

And in FORM-mode its like this

Instead of typing manually, you may select the date from the calendar and modify the time using the time control.


Copying Resultset to Clipboard | SQLyog MySQL GUI

﻿ Copying Resultset to Clipboard | SQLyog MySQL GUI

Copy Result To Clipboard

To copy your Resultset in Clipboard right click on the Result window and select:

  • Copy Cell Data To Clipboard... to copy only the selected cell value to the Clipboard.

  • Copy All Rows To Clipboard... to copy the entire resultset data to the clipboard in CSV format.

  • Copy Selected Row(s) To Clipboard... to copy only the selected portion of the resultset data to the clipboard in CSV format.

  • Duplicate Current Row... to duplicate only the focussed row of the resultset data as a new row in Table Data. You should not worry about auto_increment columns (SQLyog willl handle that automatically) but all other CONSTRAINTS - such as UNIQUE KEYS - will need to be handled by user. Just edit the row appropriately before saving it.

For the two options - 'copy all rows to clipboard' and 'copy selected row(s) to clipboard' a dialog will appear where you can specify technical details for rows (Escape Characters and Line Terminator Characters) and fields (Fixed Length, if used, or Terminators and Enclosers, if field length is Variable).
Here you can also specify if Column Names must be copied to the Clipboard together with the data.

Use the button Fill Excel friendly values if you wish to copy your data from the Clipboard directly to an Excel workbook or to a file which will be then opened in MS Excel.

Here is how rows look in MS Excel copied via the Clipboard using the Excel-friendly feature:

Resultset copied to an Excel workbook via the Clipboard in an Excel-friendly mode

... and in the Notepad, copied using manually defined delimiters (\r\n for Lines Terminator and ; for Fields Terminator):

Resultset copied to the Notepad via the Clipboard using manually defined delimiters


Exporting Resultset | SQLyog MySQL Manager

﻿ Exporting Resultset | SQLyog MySQL Manager

Exporting Resultset

Starting from SQLyog version 5.22 the export options from the RESULT tab and the DATA tab are identical and compared to previous versions. Right click in the grid where the resullt is shown and choose 'Export data'. We support export to XML (two XML versions actually: a simple XML format and the XML format used by Microsoft Excel), HTML, CSV and various SQL formats.

Read more details about the export options (in the paragraph about 'tables') here.


Updating MySQL result set from RESULT tab | SQLyog MySQL Client

﻿ Updating MySQL result set from RESULT tab | SQLyog MySQL Client

Updating MySQL result set from RESULT tab

When the MySQL server sends a resultset to a client, it does not only send data but also various types of 'metadata'. One such important piece of 'metadata' is that for every column in the result set the client has information about the database from which the data originates. SQLyog uses this information and adds the database name to the INSERT, UPDATE and DELETE queries generated.

However in two situations such 'metadata' is not available. The two situations are:
1) With MySQL servers before 4.1. Those early servers do not have this information in the resultset returned to the client.
2) When using HTTP-tunnel. PHP does not return this 'metadata' information - also not with recent MySQL servers. PHP only returns data.

In those two cases SQLyog will execute INSERT, UPDATE or DELETE queries against the database that is currently selected by user (typically in the Object Browser). For every new RESULT tab opened it will remind you once when you try to INSERT, UPDATE or DELETE data if either of the two conditions listed above apply. It is user's responsibility to manage the database context in those mentioned cases. If user fails to do this, the statements generated by SQLyog will most probably be invalid (and an error will be returned), but there also is a rare chance that the statement is valid (if table names and column names are the same in two databases) and in that case executing statements against the wrong database may result in damage to data stored.

This is however only a risk if
1) user executes a script with 'fully qualified tablenames' (`database`,`table`) and another database than ?database` is currently selected .
2) users executes a statement without 'fully qualified tablenames' and changes the database context from object browser after execution and next tries to INSERT, UDPATE or DELETE queires from RESULT tab.
3) result has data from more than one database. In that case you will need to switch the database context manually depending on the origin of the columns in the RESULT tab where you INSERT, UPDATE or DELETE queries.


Query Profiler | SQLyog MySQL Manager

﻿ Query Profiler | SQLyog MySQL Manager

Query Profiler

The PROFILER tab will occur in the DATA/RESULTS pane after executing a SELECT query if the 'Query Profiler' feature is turned ON. If all options were selected in 'Preferences' the following information will display (provided that the server supports them all),

EXPLAIN Result: This will print the returns of EXPLAIN SELECT ... (for the SELECT query you executed). EXPLAIN is the most basic way to get information about how the query performs. It is supported by all MySQL versions. Most important you will see how indexes are used. Note that you can use FORCE INDEX in the query if EXPLAIN reveals another use of indexes than what you want.

EXPLAIN EXTENDED Information: For servers that support EXPLAIN EXTENDED that will be executed instead of "plain" EXPLAIN and also SHOW WARNINGS will be executed. The return of this SHOW WARNINGS is printed. Most important it tells exacly what the query looks like after it was rewritten by the Optimizer built-in the MySQL server. For instance a query with a subquery may have been rewritten to use a JOIN-construction instead. This option is supported by the MySQL server from 4.1 version.

Change Of Status Variables Due To Execution Of Query: SQLyog retrieves the return of SHOW SESSION STATUS before and after executing the query and lists all those that changed due to execution of the query. Also the change for each is listed. This is valueable information and will also sometimes make it easier to interpret the output from EXPLAIN. Also some specific GLOBAL status variables will be retrieved that can give provide additional InnoDB-related information (but note that if more clients are connected you should know that they reflect what all connected clients are doing. So use with care!). Also with 4.1 and older servers SESSION option is not supported for SHOW STATUS, so on those older server versions all status variables displayed will be global). Finally a few listed status variables displayed are the actual values after execution of query (those are mostly related to query cache and for those the incremented value does not make sense). Global and point-in-time values are marked with a special symbol.

SHOW PROFILE Result: Server built-in 'Query Profiling' and the SHOW PROFILE command was added in MySQL 5.0.37. It is now available in all 5.x and 6.x server branches. It reveals detailed information of all internal operations that the server performed to execute the actual query and displays detailed time information for each operation (using microseconds accuracy). SQLyog will 'aggregate' (sum all values identified with same 'state' value) and sort the result of this calculation so that largest values will display at the top. SHOW PROFILE for a simple query will look like this in SQLyog:

Note that in particular that the information displayed by SHOW PROFILE will depend on server configuration (including Query Cache configuration) and the size of databases and tables on the server. You should not expect identical (or even similar) results for SHOW PROFILE on different servers (this is actually to some extend true for all the four types of information displayed as the MySQL optimizer may sometimes select different execution plans depending on configuration and on data, but SHOW PROFILE is mostly afffected!). Note that you can add SQL_NO_CACHE option to the query if you want profiling information not 'disturbed' by Query Cache operation.

Also note the current restrictions of this Query profiler feature:

Query profiler is only enabled when executing a single query - not when 'execute all' executes more than one query.

SHOW PROFILE is enabled only if the server supports the server variable 'profiling'. The very first versions of the server that shipped with profiling (like 5.0.37) did not have this server variable implemented.

Note: This feature is available in SQLyog Ultimate.


Messages Tab | SQLyog MySQL Management Tool

﻿ Messages Tab | SQLyog MySQL Management Tool

Message Tab

It shows the information about the various query(s) executed (e.g. number of row(s) returned/ updated / modified etc.) All those data are as they are returned in the 'status message' sent by the MySQL server after (successful or unsuccessful) execution of the query, but before transmission of data has started.

The 'time taken' shown here is the time that has passed from the above-mentioned status message was received till all data was transferred and received by SQLyog (a hint: to see the time passed from the query was sent to the server till is displayed in the HISTORY tab. This time is - with a reasonable fast connection - very close to the server execution time).


Info Tab | SQLyog MySQL Manager

﻿ Info Tab | SQLyog MySQL Manager

Info tab

The Info tab shows information about all objects of currently selected database object in the Object Browser (Database, Table or other object). Also the Info tab will populate with data for the connection/server if the 'connection node' itself is selected in Object Browser.

The information can be displayed using a tabular/HTML format or using a plain text format. The first will provide the best overview - however the latter will be more compact and will also be useful should you want to copy/paste information to another program.

As HTML Format:

As Text Format:

There is an option in Preferences to change the position of Info tab to either the Upper pane or Lower pane.

You can also search for a particular string in Info tab by selecting Edit -> Find (or press Ctrl+F/F3) from the menu


Schema Optimizer | SQLyog MySQL GUI

﻿ Schema Optimizer | SQLyog MySQL GUI

Schema Optimizer

The Schema Optimizer feature analyses what data are stored in the table and proposes schema changes that will optimize the table (column types and column lengths) to fit existing data. Technically, this feature is based on the server implementation of "Procedure Analyse()".

Having wrong and too long datatypes can reduce server operations on the table as more memory will be used. Also, for columns on which indexes are defined reducing datatype length will reduce the size of the index. Depending on storage engine and how data are looked up by the Engine that can result in significant performance improvement. This can be achieved by clicking on 'Calculate Optimal Datatype' link in HTML mode.

In particular it is a common misunderstanding that length of varchars does not matter much - but that is only true for storage on disk and not when data are loaded into memory. A varchar(20) occupies 20 bytes in memory and a varchar(100) occupies 100 bytes.

However you should never use this feature uncritically for two reason:

  • Neither the server nor SQLyog can know what data may be inserted to the table in the future. So, if SQLyog proposes you a varchar(37) that only means that this is the most efficient datatype for data currently stored. The server admin or the application developer will have to take the decision.

  • We have disabled the ability of 'Procedure Analyse()' to propose ENUM types. There is a bug in "Procedure Analyse()" that causes inconsistent and wrong results in all server versions which are currently released. If you want to check if an ENUM type is appropriate for a particular column you may supplement this feature by executing SELECT COUNT(DISTINCT column) for the column.

Note: This feature is available in SQLyog Ultimate.


Redundant Indexes | SQLyog MySQL Client

﻿ Redundant Indexes | SQLyog MySQL Client

Redundant Index Analyzer

Indexes in a database are double-sided: They are required for SELECT queries on large tables to be fast and efficient, but on the other side whenever data in a table changes (ie. when executing INSERT, UPDATE and DELETE statements) the server will have to maintain the index what is an expense (it causes IO and uses CPU). So, you should have what indexes you need and what indexes are used by the server and you should avoid indexes that the server will not use anyway and indexes that have no more information than what another index already has. A typical example is that if you have 'index1' defined on (column1, column2) and 'index2' on (column1, column2, column3) index1 is redundant (note that this statement gets modified if one or more of the indexes are UNIQUE or FULL-TEXT indexes).

Also redundant indexes consume disk space and occupy memory, what is one more reason to avoid them.

The feature to find redundant indexes analyses index information stored in the Information_Schema database and finds indexes on tables that are redundant. It does by executing a complex query and analyzing the result client-side. The control for activating this as well as the result will display in INFO tab in HTML-mode for both the database level and the table level.

Database-level: You can toggle the column displaying redundant indexes ON and OFF by clicking the button SHOW REDUNDANT INDEXES/HIDE REDUNDANT INDEX INFO (the caption of the button will change). Also note that if you click a table name the table will get focus in the Object Browser and the Object Browser will expand the folders containing the table symbol if it is not already.

Table-level: Also here You can toggle the column displaying redundant indexes ON and OFF by clicking the button. Redundant indexes will be marked with a red background color.

However, note that there may be some useless indexes not found by this feature. SELECT-performance when querying a very small table (the classical example is a table with the name of all US states - and an even more trivial example is a table with a single row) will not improve with an index. An index on such table is useless - but not 'redundant' and it will not be found by the 'Find Redundant Indexes' feature as we do not query the table itself - only index information from Information_Schema. For the same reason this feature requires a 5.0x server or higher to be functional.

Note: This feature is available in SQLyog Ultimate.


History Tab | SQLyog MySQL Management Tool

﻿ History Tab | SQLyog MySQL Management Tool

History Tab

There is an option in Preferences to change the position of History tab to either the Upper pane or Lower pane.

Reconnects and failures to reconnect will be written to HISTORY as a comment. You can also search for a particular string in the history tab by selecting Edit -> Find (or press Ctrl+F/F3) from the menu


GUI filtering and sorting | SQLyog MySQL GUI

GUI Filtering and Sorting of Data

SQLyog lets you filter and sort data interactively from the GRID display of the program's RESULT/TABLE DATA tab. The sort and filter criteria selected interactively from the GUI as explained below will be used internally by SQLyog to generate an query with appropriate WHERE and ORDER BY - clauses.

Sorting: When you click on a column header in the GRID the rows of data will be sorted ASCENDING on that columns. If you click once again sort order will change to DESCENDING. Click once more and sort order will again be ASCENDING.

To sort on multiple columns first click on the column that shall be given highest priority in the sorting. Then Ctrl-click on every other column that shall be added to the sort as 2nd, 3rd etc. priority. Also Ctrl-clicking more than once on the same column changes the sort from ASCENDING to DESCENDING and back.

Note: Multiple Sorting can be done only in Table Data tab.

Filtering: Just locate a cell with the value you want to use with the filter and right-click on a cell of the GRID and select the 'filter' option and the filtering operator. Or enter the value in the last empty cell in the data grid without saving. Next click in another cell in the same non-saved row and right-click in the cell where value is added to be filtered and now the context menu with the 'filter' option displays in the grid. There are filter options for all common types of data: numbers, date- and time types and strings. The data shown will be filtered on that column using the criteria entered.

SQLyog also 'smartly' or 'transparently' handles all sort of 'traps' that can occur with filtering of data in SQL. For instance when filtering on a (NULL) value SQLyog uses the condition "IS (NOT) NULL" correctly. User may enter "=" or "<>" as operator and "NULL" or "(NULL)" as operand and in that case SQLyog will frame the query with an "IS NULL|IS NOT NULL" operator. Also all sorts of issues with special characters (characters that must be escaped in SQL) and a special isssue with the LIKE operator and strings containg the "\" (backslash) character are handled automatically.

You undo/reset filtering from the same 'filter' context menu as where you defined the filter.

Custom Filter: SQLyog has an option to Customize filter in both Result and Table data tab. Right click on the grid->Filter->Custom Filter will bring up the Custom Filter dialog box. Choose the column to filter on, filter condition from the drop down. Enter the value to filter on, in the text box. By default it contains the content of the cell on which you right clicked.


Export Table Data | SQLyog GUI for MySQL

Export Data

With SQLyog you can export data of a table you can select the table in the Object Browser and by right clicking select Backup/Export. Here we have 2 options,

  • Backup Database As SQL Dump…

  • Export Table Data as CSV, SQL, Excel etc...

Select 2nd option Backup/Export -> Export Table Data as CSV, SQL, Excel etc... (press Ctrl + Alt + C). This option is also available in menu Table -> Backup/Export -> Export Table Data as CSV, SQL, Excel etc...

Now you can export data of a table in various formats. The available options are:

  • CSV

  • Excel

  • HTML

  • XML

  • SQL (Note that this 'export data as SQL' is not intended for backup purposes. Read the full explanation at the bottom of this page!)

Also, you can export the resultset of a query in the same formats. You can also select what columns to include in the export. To access this feature you can

  • right-click the GRIDs of DATA or RESULT tabs,

  • right-click a table in the Object Browser.

  • select the option from 'Table' or 'Tools' menu. From 'Tools' menu it will export what tab is active (the DATA tab or a RESULT tab)

In every case this dialogue will appear:

The relevant section of this dialogue becomes active as you select your option. We will now have a detailed look on the different export options:

As CSV: If you want to change the program defaults (or whatever you entered last time you use this function) Click the Change and in the appearing dialogue check options as you need and specify a file name for the export.

To fully understand this dialog you will need to understand the MySQL "LOAD DATA INFILE" statement. However, there is an extremely useful feature if you wish to copy your data from the Clipboard directly to an Excel workbook or to a file which will be then opened in MS Excel. Use the button Change -> Specify the escape characters pops and now click on Fill Excel friendly values where SQLyog will automatically select the delimiters used in Excel. Note that to use with Windows localizations distributed in most continental European countries you should consider change the " , " (comma) to " ; " (semicolon), as quite a lot of localized programs expect that (true for Microsoft Excel and the Microsoft text-ODBC driver for instance).

But you can of course specify any other delimiters if you need and technical details for rows (Escape Characters and Line Terminator Characters) and fields (Fixed Length, if used, or Terminators and Enclosers, if field length is Variable). Here you can also specify if Column Names must be copied with the data.

After filling in all the details, press Export in the Export Data as CSV dialog window.

Sample output in CSV

As Excel: The Excel data format we support is the XML-based format introduced with Microsoft Office 2003. It also works on Office 2007 (only small changes that does not affect this functionality). With use with previous versions there is a 'Compability pack' for Excel 2000 and Excel 2002/XP available as a download from the Microsoft webpage.

Next image shows SQLyog connected to MySQL with a database containing a broad variety of DATE and TIME type variables you will see some 'weird' values but they are all valid with the MySQL version in question and the server sql_mode:

After export using the Excel option it displays like this in Excel 2003

Sample output in CSV

Note that those values that are not valid in Excel (such as ZERO-times and DATEs before January 1st 1900) are mapped to a string type (shows left-aligned in the cell). But DATE and TIME types (right aligned) are used whenever possible. We will start displaying data as similar as possible to the display in MySQL (also because this is LOCALE-independent), but after import you can of course format cells as you like.

As HTML:

Sample output in HTML

As XML:

Sample output in XML

As SQL Statements:

With 'Export as SQL' a single-table/result set can be exported. The purpose of this export option is to provide a simple and fast way to export data embedded in SQL INSERT statements. With this tool you can also export data embedded in INSERT statements from a resultset from a query using a JOIN or UNION. However you should observe that if two or more JOINED tables have identically named columns the data will not import unless you use an ALIAS for at least one of them.

Also a very simple 'CREATE STATEMENT for the TABLE' is created (if you choose), but this create statement is not a complete CREATE statements with all table and column options (such as Character Set and Storage Engine settings) and it should not be used for backup purposes. Click here to get more information on how to dump data as SQL Statements (Batch Scripts) or here to get more information about the (scheduled) Backup 'powertool' of SQLyog Enterprise. Those are the two options we provide that are 'fit' for backup purposes and other situations where you want detailed information about table structure(s).

If you want to use a text file with SQL statements for Backup purposes you should not use this option, but use the 'Backup database as SQL Dump' option instead.
'Export as SQL' will be enabled only if there is a single table associated with the Result tab. For a multi-table result sets even selecting a table from drop-down, 'Export as SQL' will be disabled.


Backup/Restore Table | SQLyog MySQL Client

﻿ Backup/Restore Table | SQLyog MySQL Client

Backup Table to (and restore from) SQL Dump ('Batch Scripts').

In the table menu/context menu you will find an option to backup a Table to (and restore from) a SQL Dump similar to what is possible with a database. Refer to that paragraph for details.


Import Data From CSV | SQLyog MySQL Manager

﻿ Import Data From CSV | SQLyog MySQL Manager

Import CSV Data Using LOAD LOCAL

To import data from a CSV file into a MySQL table, select the table in Object Browser and select Table -> Import -> Import CSV Data Using Load Local... or (Ctrl+Shift+M).

Tables: The list of all tables of the currently active database is shown. Select the Table from the list box.
Columns: The list of all Columns of the selected Table is shown. Select the Columns for which the data to be imported from the File (you should be careful to specify the columns else you may get error or wrong result).
Import from Files: Enter the name of the file (or click the … button to get File Selection dialogue box to create/select file) from which the data in CSV format would be imported.

Other options:

Low Priority: The transfer job is carried only when idle resources are available
Concurrent: the transfer job is carried along with other processes (which are not of high priority).
Replace: Replaces the data in target MySQL table of same primary key value.
Ignore: Skips the row of same primary key value in the mySQL target table.
Ignore lines: Starts reading data in the CSV file after skipping specified number of lines from the top in the CSV file. Useful to skip header (or a bunch of records from the top).


Data Manipulations | SQLyog MySQL GUI

﻿ Data Manipulations | SQLyog MySQL GUI

Data Manipulation

To manually insert or update data in a MySQL Table, right click on the table in the Object Browser and select the Open Table or press F11. It is populated by a simple SELECT query generated by SQLyog itself. This tab will always display the table data in 'paged mode' and above the GRID you will find controls (like arrow keys) to navigate through the complete table.

The specified number of rows as shown in the Limit box is displayed. To see a limited number of rows, specify the limits in the edit boxes and press Refresh. To see all rows check All rows option and press Refresh. The value you entered will now be stored by SQLyog and the value will have effect for that particular table in that particular database from now on - also after a program restart. Observe that a table is not identified by connection details so if you have same 'databasename.tablename' table on different servers (for instance replicated or synchronized servers) SQLyog data tab will display the same number of rows for both tables. Finally, note that only the number of rows defined is stored and thus persistent - the 'offset' value is not - so when viewing table contents next time after display contents of another table, display will always start at first row.

  • To Alter value in any cell, place the cursor at the desired cell and type the new data.

  • To Insert a row at the specified position, enter the data at the last blank row.

  • Multiple selection in the GRID is possible with Shift+Click.

  • To Delete specified rows, check the checkbox against the rows and Click delete button in the toolbar (you may mark several rows for deletion and delete them at a stroke).

  • To sort data just click on the grid header.

  • To set 'NULL', 'EMPTY' (string) or 'DEFAULT' you can right click a cell and choose the option.

  • Also you can enter functions like now() (they must start on first position) or certain KEYWORDS like CURRENT_TIMESTAMP, CURRENT_USER and NULL and they will be stored not as the literal string 'CURRENT_USER' but as what is the meaning of that keyword (like 'memyself'@'somehost'). To store a function or keyword as a literal string (i.e. the string "now()") you can use backticks/backquotes (like `now()`).

When data are updated in the GRID or FORM view saving to the database only takes place when clicking the save icon or when moving cursor to another row (in GRID) or displaying a new row (in FORM). If the data is not saved then there is a warning link at the bottom right cornor (Data modified but not saved) by clicking on that link you may see prepared SQL statement.

Note that it is not possible to perform INSERTs or UPDATEs on spatial data from the DATA and RESULT tabs. You will need to execute INSERT or UPDATE statements from the editor. However a result set of a table not having any spatial data can be UPDATEd also if columns of the table (not shown in the result set) use spatial datatypes.

And also, UPDATE a row of data from DATA or RESULT tab if any of the columns displayed for the actual row contains data identified as binary data by containing a NULL byte ('\0' in C-notation) no matter whether this occurs for binary datatypes (binary, varbinary, BLOB) or string types (char, varchar, TEXT). Instead an error message will print (reason for this: the UPDATE operation would store what was displayed - not the underlying binary data causing the display).

You see the table data in Text with each column separated by a Tab. Viewing table data in text mode is useful to cut and paste plain text into another application.

Toggle between Grid Mode and Text Mode by pressing Ctrl+L .


Foreign Key Dropdown | SQLyog MySQL GUI

Looking up constraints for a value

When inserting/updating a value in a column on which a Foreign Key CONSTRAINT is defined SQLyog GRID and FORM view (in Table data) provide you with a facility to look up values in the 'parent' table. When such a CONSTRAINT exists the cell where you enter data will display a '...' button to the right in GRID as well as the FORM view. In GRID view to indicate that the columns have the foreign key contraint, a icon of "a table with a key" is present next to it.

Foreign Key Constraint in GRID mode

Foreign Key Constraint in FORM mode

If you click this button SQLyog will find matches for what you have entered in the 'parent' table. You can also use Ctrl+Space from the cell to open the same. It does so in two steps:
1 First it will try to find an exact match (using " = " operator) in the 'parent' column of the 'parent' table.
2 If no match is found in first step it will try to find a 'fuzzy' match (using " LIKE " operator with wildcards attached to the string before and after) against all columns of the 'parent' table.
Note that both searches will be case insensitive when searching on strings except for columns stored with a binary or case sensitive collation. A new dialog with the result of this search is displayed.

To explain the various options that the look up table offers let us take an example.

The parent table "language" consists of primary language, primary_language_identifier, sub_language and sub_language_identifier. The child table "country_language" consists of country_name, language_id and sub_language_id. Suppose while entering the data in the table "country_language" you know the name of the language spoken but not its corresponding id. Then enter 'English' for instance against the country name Canada (it does not matter what datatype is used for that column or whether 'English' is a valid entry here. It does not matter because 'English' will not be saved - it is a search string used internally) before clicking the '...' button and you will see all the rows that match the string 'English' displayed from the parent table. You can of-course change the search string in the filter field once the dialog box is displayed.

However searching in all columns of the 'parent' table may sometimes return too much 'noise' making it difficult to find the one value you require. To avoid this in the combo box you may select specific columns to be searched on and perform the search again and thus 'narrow' the result.

Once you have entered the language_id and move onto enter the sublanguage_id then, all the sub_language_id's matching the corresponding language_id will get displayed on clicking "…" button if "filter on values already entered" is checked. If the option is not checked then it displays all the values present in the parent table.

Since in the above screen shot "filter on values already entered" is unchecked it displays all the entries from the parent table.


Table Operations | SQLyog MySQL Tool

﻿ Table Operations | SQLyog MySQL Tool

Table Operations

Rename Table

To rename a tablename select the table in the Object Browser and select Table -> More Table Operations -> Rename Table from the popup menu or press F2).

Empty Table

To delete all rows select the table in the Object Browser, right click and select Table -> More Table Operations -> Truncate Table (or press Shift+Delete). This option is also available in 'Tools' menu.

Select the Table to be emptied in the explorer window. You get a warning message box. Click Yes to truncate all data in the Table (but the table is NOT dropped from the database).

You get a message if the truncation is not permissible (e.g. attempting to drop rows with foreign key values)

Drop Table

Select the table you want to drop in the Object Browser and select Table -> More Table Operations -> Drop Table from the popup menu (or press Delete).

Reorder Columns

To change the sequence of columns in a table, select the table in the Object Browser and select Table -> More Table Operations -> Reorder Column(s) (Ctrl+Alt+R) from the popup menu.

 Select any column and click Up or Down button to move the column up / down. Having re-sequenced the columns, click Re-Order to save the table with changed structure. The column data in the table gets re-arranged accordingly.

Change Table Type

To change the Table type (or "Engine' as the term is for the latest MySQL versions), you select the Table Type from the drop down list you would like to change the selected table to. SQLyog queries ('asks') the server about what types/engines are available and only displays the ones available (that may vary considerably depending on the server version, the platform where the server runs and how it was compiled and how it is configured).


Copy Table to a different HOST | SQLyog MySQL GUI

﻿ Copy Table to a different HOST | SQLyog MySQL GUI

Copy Table to different HOST

This feature can be used instead of the Database -> Copy DB To Another Host/Database option when you need to copy a single table, but in fact you can use it for multiple tables at once.

Select the table you want to copy and then select Table -> Copy Table to different Host/Database.

At the appeared dialog box, make sure that the required table is default selected and if necessary, select other tables to be copied using treenode checkboxes. You may select the object(s) like tables, views, stored procs, functions, triggers and events to quickly select the object(s) of the same DB. Now select the target database where you want to copy the data.

Click Drop If Exists In Target to first delete the named object(s) in the destination database before copying them from the source database.

Click Structure Only to copy the selected object(s) with no rows (the destination table is empty) or click Structure And Data to copy the object(s) along with its data in the destination database.

Note: To specify a different host as the target database, you must first connect to that host using File -> New Connection.


Pasting Statements for Table | SQLyog MySQL Manager

﻿ Pasting Statements for Table | SQLyog MySQL Manager

Pasting SQL for Table

INSERT statement

With the menu item Table -> Paste SQL Statements -> INSERT INTO <tablename>..., SQLyog creates a template of a MySQL statement with INSERT clause for the table selected in the Object Browser. The feature is useful to manually insert data in a table: just type the values for the respective columns in the template.

UPDATE statement

With the menu item Table -> Paste SQL Statements -> UPDATE <tablename> SET..., SQLyog creates a template of a MySQL statement with UPDATE clause for the table selected in the Object Browser. The feature allows you to updates the datas in a table : just type the values for the respective columns in the template.

DELETE statement

With the menu item Table -> Paste SQL Statements -> DELETE FROM <tablename>..., SQLyog creates a template of a MySQL statement with DELETE clause for the table selected in the Object Browser. The feature allows you to delete datas in a table: just type the values for the respective columns in the template.

SELECT statement

With the menu item Table -> Paste SQL Statements -> Select <col-1> ... <col-n> FROM..., SQLyog creates a template of a MySQL statement with SELECT clause for the table selected in the Object Browser. The feature allows you to economize your efforts and avoid misprints in field names: all you have to do is only remove extra fields from the clause and introduce other changes to the query.


View Data | SQLyog MySQL Management Tool

﻿ View Data | SQLyog MySQL Management Tool

View Data

To quickly view data of a table select the table in the Object Browser and 1) select Open Data from the popup menu 2) click the DATA tab 3) or just press Enter. The data of the table is shown in the Table Data tab. This data can be viewed in three different modes:

1. GRID View

2. FORM View

3. TEXT View

GRID View, TEXT view and FORM view are similar to the Result tab.

There is a general LIMIT setting in 'Preferences', however you can always change that value form the DATA tab itself. Note that it can take considerable time to fetch many rows of data from the server - depending on the server load, configuration and the quality of the connection. Also the number of rows that can be displayed is limited by the memory available.

If by accident you have chosen to display so many rows that it takes too much time to load the data, there is a STOP option. The EXECUTE (single green arrow) - icon changes to a STOP icon while data is loading. Click this once and the loading of data will stop. Note that it may take a few seconds (depending on the connection) to communicate that message to the server!

Note: Form View is available in SQLyog Enterprise and Ultimate.


Advanced Properties | SQLyog MySQL Manager

﻿ Advanced Properties | SQLyog MySQL Manager

Advanced Properties

To view the Advanced Properties of a table, select the table in the Object Browser and select Table -> More Table Operations -> View Advanced Properties from the popup menu.

To define or to edit the Advanced Properties of a table click the 'Advanced Properties' button from CREATE TABLE or ALTER TABLE.

The properties displayed are as they were defined with the CREATE TABLE or latest ALTER TABLE statement. Note that not every setting for every property has effect with every storage engine. However it is stored what you define and whenever you change the table to an engine/type that supports some defined option, that option will take effect if not already the case.


Data Search Introduction | SQLyog MySQL GUI

﻿ Data Search Introduction | SQLyog MySQL GUI

Data Search

The 'Data Search' feature lets you find specific data without actually writing any SQL. It is available from the 'file' menu. If you select this menu item a new TAB (named 'Data Search') will open along with the Query/Query Builder/Schema Designer tabs you have opened already. Also the "+" icon to the right of the rightmost tab in the query pane has an option to open a Data Search tab. You may open as many Data Search tabs as you want. A 'Data Search' TAB is 'sticky'. It will have to be closed by the user and only updates when the 'Search' button is clicked. So you can keep it open for as long as you want and can work elsewhere in the program and return to it later.

After entering some text in the text-box, click 'Search' or push enter. SQLyog will find all data that matches the search string entered. The search happens inside the currently selected database/table/column (or globally if the connection/server node is selected). Every row fullfilling the search criteria for just a single column in the currently selected connection/database/table/column will be returned in the result of the search.

Note: This feature is available in SQLyog Ultimate.


Data Search Operators | SQLyog MySQL GUI

﻿ Data Search Operators | SQLyog MySQL GUI

Search Syntax and Operators

There are basically two different ways to use the Data Search feature.

First way:

A 'fuzzy' search (using the LIKE operator and with %-wildcards attached both before and after the search string you entered). This is bascially a complete Google search logic adopted to database search. It will transparently for user translate the Google search syntax to SQL and fire the resulting SQL-statements against the database objects selected for search.

'jo' entered the search will find both 'Joe', 'Joseph', and 'navajo'. You may use various operators to refine the search. First of all note that the SPACE character in the search string denotes a logical AND on the words on either side of the SPACE.

So entering snow leopard and snow AND leopard is exactly the same. In both cases the WHERE-clause will be

.. WHERE column LIKE '%snow%' and column LIKE '%leopard%'

You may specify the OR operator instead entering 'snow OR leopard' and the WHERE clause will be

.. WHERE column LIKE '%snow%' OR column LIKE '%leopard%'

Synonyms for AND-operator is "&" and SPACE character (as described above). Synonym for OR-operator is "|". AND and OR are considered operators only when there is whitespace on both sides. 'hand foot' is the same as 'hand AND foot' - not 'h AND foot'. Note that SQL-wildcards ('%' and '_') in the search string will be treated as literals and not as wildcards.

Also the "double quote" operator is supported in order to avoid the SPACE-character becoming a synonym for the AND-operator. Entering the search string "snow leopard" (with quotes) will generate the WHERE-clause

.. WHERE column LIKE '%snow leopard%'

Note that the single-quote character cannot be used as a synonym for the double-quote character. The single-quote character has no special meaning in SQLyog Data Search. It is just a plain character like 'a' or '1' is. Also you cannot use paranthesis'es for 'nesting' AND and OR operators. The expression is evaluated from left to right.

A few special considerations that most users will probably not care about are: If a "double quoted string" contains a double quote-character itself followed by whitespace this 'inner' double quote-character must be escaped with the \-character (backslash). To search for a string that is also an operator use double quotes. so to find instances of '&' and '|' stored in the database enter the search string "&" OR "|" (with quotes).

Also the '+' and '-' operators are supported. +string or +"some string" will not append a '%'-wildcard to the ends of the specified search string. So '+' is an exact match with the search string you specified. For instance +mysql will find rows where a column exactly matches 'mysql' - and not 'mysql server' for instance. '-' behaves like '+' except that the LIKE clause will be replaced with a NOT LIKE clause. Note that '+' and '-' only work as operators when they have no whitespace to their right. +lion will find exact matches on 'lion' whilst + lio n will find rows where there are fuzzy matches on BOTH 'lion' AND '+' in same columns of the database objects searched.

When entering NULL as the search string the 'IS NULL' SQL-operator is used. Example: enter "snow leopard" OR +"bengali tiger" OR NULL (with quotes) and the where clause will be

.. WHERE column LIKE '%snow leopard%' OR column LIKE 'bengali tiger' or column IS NULL

When combining '+' and '-' operators with NULL, +NULL is exactly the same as NULL and -NULL will generate the SQL-operator IS NOT NULL. To search for the literal string 'NULL' should you want to, `backquote` it as `NULL` or enclose it in double quotes as "NULL".

Finally you can use hexadecimal patterns for search writing the hexadecimal search string in x'..' notation. A valid HEX string with characters in the range 0..F (where the range A..F is case insensitive) will need to be specified. If for instance you specify x'STU' (where 'STU' is not a valid HEX-pattern) as the search string we will simply find fuzzy matches on the literal string " x'STU' ". Also hexadecimal search can be combined with '+' and '-' operators for 'exact match' and 'no match' (but the "double quote" operator is not supported with binary search). Search with hexadecimal strings require MySQL 4.1 or higher. With older server versions the expression is treated like a literal.

Second way:

A search based on a regular expression. It will use the REGEXP operator with the string you enter as operand. If for instance you want to find all occurrences of 'Jim' and 'Jimi' but not 'Jimmy', 'Jimmie' etc. using the option to use regular expression enter '^jim$|^jimi$' (without quotes). The WHERE clause generated will be like WHERE column REGEXP '^jim$|^jimi$'; . Use of regular expressions is a powerful method for string matching and is worth studying and learning - and often preferred by database administrators.

Both search methods are case insensitive when searching in strings except for data stored with a binary or case sensitive collation or stored in binary datatypes (including BLOB). However note the exception that when searching strings containing non-ASCII charactes with regular expressions the search is case sensitive.

Also all operators and the NULL keyword are case insensitive.

Once the search has been completed all matches are displayed in a page-wise manner much like a web page. Each occurrence of the search string found is a click-able link. By clicking the link, the lower half of the tab (that was 'greyed out' till now) will populate a data GRID identical to the one in the DATA and RESULT tabs. The table where this particular occurrence was found will display here and the same occurrence that you clicked on in the search result will be selected. Each page lists out twenty of the search results. You can perform all kinds of operations on data here in the same way as you do when working with data in DATA and RESULT tabs.

Note: This feature is available in SQLyog Ultimate.


Data Search Filter Options | SQLyog MySQL GUI

﻿ Data Search Filter Options | SQLyog MySQL GUI

Filter Options

While searching, filters on data, specifying where to search and where not to search, can be applied. These filtering options are for searching through specific datatypes, as well as a subset of objects inside the current object (ie. a subset of databases of current connection, as subset of tables in current database or a subset of columns in current table).

The current filter settings are displayed in the Data Search Tab. To change the filters click on the link 'click to change' and this dialog will open. Select what objects and datatypes to search and click OK.

A few points to note are

The filter setting for datatypes is persistent (both inside current session and across sessions).

To search on the BIT type you should preferably use the hexadecimal operator. In MySQL BITs are returned to the client in binary form and searching with plain text - and also not even strings composed of '0' and '1' - does not make much sense. However x'1' will find all instances of a BIT(1) containing "1" and a BIT(4) containing "0001" etc.

Note: This feature is available in SQLyog Ultimate.


Database | SQLyog MySQL Manager

﻿ Database | SQLyog MySQL Manager

Database

SQLyog provides all the tools you need to manage and navigate databases. Note that to start working with databases in SQLyog you need to connect to a MySQL server.


Create Database | SQLyog MySQL Manager

﻿ Create Database | SQLyog MySQL Manager

Create Database

Select Database -> Create Database (Ctrl+D) or use the Object Browser context menu to create a new database. Enter the Database name and click Create button. The created database gets currently selected. The charset and collation options lets you define the default charset and collation for a database. Tables created in the database will be created with the selected charset and collation unless otherwise specified.


Alter Database | SQLyog MySQL Manager

﻿ Alter Database | SQLyog MySQL Manager

Alter Database

This option lets you change the default charset and collation for a database. New tables created after that will be created with the selected charset and collation unless otherwise specified. Default settings for existing tables and data stored in existing columns are not affected by this. It changes only defaults for the database and as such has only effect for future tables and data.

How to invoke the dialogue: Select Database -> Alter Database (or press F6 or use Database context menu) to alter database.


Copy Database To Different Host / DB | SQLyog MySQL GUI

﻿ Copy Database To Different Host / DB | SQLyog MySQL GUI

Copy Database To Different Host/DB

Select the Database you want to copy and then Select Database -> Copy Database to different Host/DB to copy a database (with all or selected items of its table structure as well as the data) to another database (which may be located in another host).

In Copy Database dialog box, first select the object(s) like tables, views, stored procs, functions, triggers and events to be copied from the source database. You may Select All/Deselect All by clicking on tree node checkboxes to select the object(s) quickly. Now select the target database where you want to copy the data.

Click Drop If Exists In Target to first delete the named object(s) in the destination database before copying them from the source database.

Click Structure Only to copy the selected object(s) with no rows (the destination table is empty) or click Structure And Data to copy the object(s) along with its data in the destination database.

At the moment you click the 'Copy' button it changes to a 'Stop' button. You can stop the copy process if you by accident should have started a copy process taking more time that you foresaw. What has been copied must then be deleted manually, if you do not want to keep it.

Note: To specify a database on another host as the target database, you must first connect to that host using File -> New Connection (or the corresponding icon).


Export Database As SQL Statements (Batch Scripts) | SQLyog MySQL GUI

﻿ Export Database As SQL Statements (Batch Scripts) | SQLyog MySQL GUI

Backup Database as SQL Dump ('Batch Scripts')

You can dump a database for backup or for transferring the data to another SQL server (not necessarily a MySQL server). The dump will contain SQL statements to create the table and/or populate the table. To generate a dump select the database or table in the Object Browser and select Database -> Backup/Export -> Backup Database As SQL Dump… This option is also available in Table -> Backup/Export -> Backup Database As SQL Dump... or just press Ctrl+Alt+E.

Database name: Select the source Database from the list of available databases.

Export as SQL: Specify the required option depending on what you need to export: only the database structure, only the data or both.

Export to file: Specify the Export file name.

Now check the following options as required by you:

Options having effect on source:

  • Lock all tables for read: The LOCK will be generated for one table (the one for which INSERT statements is currently generated) at a time.

  • Flush logs before dump: Using this option will ensure that all data changes pending will be written to disk before the backup starts.

  • Single transaction: Option (similar to 'mysqldump' "-?–single-transaction") has only effect with Transactional storage engines (like InnoDB). All tables will be backed up from their state at the time the backup started. This option will ensure consistency across tables with Foreing Key CONSTRAINTs. The Single transaction option and the LOCK ALL Tables option are mutually exclusive.

Options written to file:

  • Include "USE database" statement: To insert the USE database name in the script.

  • Include "CREATE database" statement: To insert the CREATE DATABASE in the script.

  • Set FOREIGN_KEY_CHECKS=0: This option should always be checked if tables with Foreign Keys are backed up as there is no way to ensure that a 'parent' table is written to the file before a 'child table'. If they are written in opposite order restore will fail if the option is not selected.

  • Add Lock Around INSERT statement(s): This will ensure that no other clients have WRITE access to tables during restore as long as they are not fully restored.

  • Create Bulk Insert statement(s): When this option is checked data from more rows will be written into a single INSERT statement. Each INSERT statement will be allowed to grow to the size specified in the 'Max. size of BULK INSERTS' setting.

  • Include "DROP" statement(s): Inserts DROP statement(s) in the script to drop the named object(s) first before restoring the script. The option does have effect on the database - only tables and other objects (Views, 'Stored Programs').

In SQL Dump dialog box, first select the object(s) like tables, views, stored procs, functions, triggers and events to be backedup from the source database. You may Select All/Deselect All by clicking on tree node checkboxes to select the object(s) quickly. Now select the file where you want to export the data.

Click Export to create the script (batch) file. SQLyog does the export in a different thread so you can stop the export process anytime.

You can even schedule the Backup process using Scheduled Backups option.


Restore Database From A Batch Script | SQLyog MySQL GUI

﻿ Restore Database From A Batch Script | SQLyog MySQL GUI

Execute SQL Script

SQLyog allows you to execute a batch file of any size (yes....any size - limited by the OS) created using mysqldump or SQLyog's Export Database As Batch Script option. Select Tools -> Execute SQL Script (Ctrl+Shift+Q). Select the file and press Execute. If SQLyog encounters an error it stops further execution and logs the query as well as the error message in sqlyog.err located in the SQLyog installation folder.


Truncate Database | SQLyog MySQL Client

﻿ Truncate Database | SQLyog MySQL Client

Truncate Database

Select Database -> More Database Operations -> Truncate Database (Shift+Del) to truncate (make the tables empty) all the tables of a database (however, the Tables and other objects (Stored Procedures, Views etc.) are not dropped).


Empty Database | SQLyog MySQL Client

﻿ Empty Database | SQLyog MySQL Client

Empty Database

Select Database -> More Database Operations -> Empty Database to drop all the tables and other type of objects (Stored Procedures, Views etc.) of a Database. However the Database itself is not dropped - it remains as an 'empty shell' only. This is practical for import of a SQL Dump with no CREATE DATABASE statement and no USE statement.


Drop Database | SQLyog MySQL GUI

﻿ Drop Database | SQLyog MySQL GUI

Drop Database

Select Database -> More Database Operations -> Drop Database (Del) to drop the active database along with all associated data objects.


Database Schema | SQLyog MySQL Manager

﻿ Database Schema | SQLyog MySQL Manager

Database Schema

Select Database -> Create Schema For Database in HTML (Ctrl+Shift+Alt+S). This is useful for documentation of database as you may print the schema nicely with appropriate page breaks, formatting etc.

Select the Tables for which Schema to be created. You may use Select All/Unselect All buttons to create the Tables quickly. Click Create button. You get the file dialogue box to specify the filename to store the generated schema.

Sample HTML Schema


Tables | SQLyog MySQL Manager

Tables

Relational databases store all their data in tables. A Table is a data structure consisting of an unordered set of horizontal rows, each containing the same number of vertical columns. The intersection of an individual row and column is a field that contains a specific piece of information. Much of the power of relational databases comes from defining the relations among the tables.


Create Table | SQLyog MySQL Client

﻿ Create Table | SQLyog MySQL Client

Create Table

Create Table

To create a table, right click on the database name in the Object Browser and select the menu option Create Table from the popup menu (or press INS). You can also use main menu: Database -> Create -> Table. This opens up a tab as shown below.

Table name : Specify the name of the table to be created.

Database : Select the name of the database where the table is to be created.

Here you can also change the character set and collation of the table. This is supported only on MySQL versions 4.1 and higher.


Columns | SQLyog MySQL GUI

﻿ Columns | SQLyog MySQL GUI

Create Columns

Columns

Insert your values in the Grid as shown below. Note that with different MySQL versions the display of this tab will vary a little. For instance the 'collation' column is only displayed when connected to MySQL 4.1 (or higher) and starting from MySQL 5.x you can specify comments for table fields. Also, there is 'Hide Language Options' where charset and collation columns can be hidden for better viewability, which is MySQL version dependent. If the data entered is incorrect, you can clear all fields by clicking the Revert button. To create the table, click on the Save button.


Delete Columns | SQLyog MySQL GUI

﻿ Delete Columns | SQLyog MySQL GUI

Delete Columns

Delete Columns

To drop a column in a table, you can either :

1. Select the column of a selected table in the Object Browser and select Others -> Columns-> Drop Column. A message box appears. Click on Yes to drop the column(s).

2. Right click on the table in the Object Browser and click on Alter Table in the drop down menu or press F6 to alter the highlighted table. Click on the check boxes beside the column name of the column(s) you wish to delete. Then click on the (-) sign in to tool bar(the delete button) to delete those columns.

If the columns are refrenced by any index or foreign keys then a warning message wil be displayed as shown below. On YES, it will modify the corresponding index(es) or foreign key(s).


Alter Table | SQLyog MySQL GUI

﻿ Alter Table | SQLyog MySQL GUI

Alter Table In Database

Alter Table In Database

To alter a table, right click on a table in the Object Browser and select the menu option Alter Table from the popup menu, or go to (Table -> Alter Table) from the menu bar (or press F6 if you have focus on that table in the Object Browser). This opens up a tab similar to the create table tab with the column names and values already filled up, as shown below. From here, edit the column value(s), add new column(s), delete existing column(s) etc.

If the table contains data rows, some data may be affected due to changes (i.e. if data type is changed or length is reduced). If the change is not permitted (e.g. you specify a column as primary key which contains NULL values), an error message is triggered and the specific offending change is not effected.

If the data entered is incorrect, you can cancel the changes by clicking the Revert button. Click on Save to alter the table. If you want to see the ALTER TABLE SQL-statement that SQLyog sends to the server before executing it, click on the Preview tab.


Create Index | SQLyog MySQL Tool

﻿ Create Index | SQLyog MySQL Tool

Create Index

Create Index

Click on the index subtab in the Create Table tab. If there is a Primary Key then that index would automatically be created.

Index Name: A name can be given for the index, but it is not necessary. A default name will be provided.

Columns: Select the column(s) from the drop down box on which you like to create the index.

To change the order of columns in the index, click on a column and click on the Up/Down buttons to move the column. Note that the order is applicable only for the Index. The column(s) in the table are NOT re-ordered.

Length: To index on a part of a column of Text data type (like Char, Text, Blob), enter the initial number of characters to be considered for Index in the length field. For example, when you enter 8, the index will be created on first 8 characters. If left blank, Index will be created on entire column. In case of BLOB data type, you must specify the length.

Index Type: Select index type from the drop down. The index types are UNIQUE, PRIMARY, and FULLTEXT.

Click on Save to create the Index.


Alter Index | SQLyog MySQL Tool

﻿ Alter Index | SQLyog MySQL Tool

Alter Index

Alter Index

To alter an index, select a table from the Object Browser,

1) Click on "Manage Indexes" icon, or
2) Right click on the table(in the Object Browser) and select the menu option "Manage Indexes", or
3) Press F7 key.

This opens up an Alter Table tab with the focus on Indexes sub tab.

Index Name: The Index Name is displayed. You can alter the Index Name.

Columns: Check/Uncheck the checkbox against the column name to include/exclude the column from the Index.

Click Save to make the changes. Or Click Revert to Cancel changes.


Delete Index | SQLyog MySQL Tool

﻿ Delete Index | SQLyog MySQL Tool

Delete Index

Delete Index

To delete an Index, You can edit an existing table's structure using SQLyog's easy to use Table Editor.

To delete an index, select a table from the Object Browser,

1) Click on "Manage Indexes" icon, or
2) Right click on the table(in the Object Browser) and select the menu option "Manage Indexes", or
3) Press F7 key.

This opens up an Alter Table tab with the focus on Indexes sub tab.

To Delete an Index of Table, click on the (-) sign in the toolbar(the delete button) to delete the selected index(s). Click on Yes to drop the index(s) as shown below.


Foreign Keys | SQLyog MySQL Manager

﻿ Foreign Keys | SQLyog MySQL Manager

Foreign Keys

Among other features some Table Engines support FOREIGN KEY constraints. An InnoDB tables was the first table type available in MySQL supporting Foreign Keys. They were introduced in the MySQL 3.23 tree. With MySQL version 5.1 MySQL AB introduced what they call the 'pluggable Storage Engine architecture' so that (third party or experimental) Engines can be added without recoding and compiling the MySQL server itself. InnoDB still is the only table TYPE (or 'ENGINE' as is the correct term form MySQL version 4.1) supporting Foreign Key Constraints that MySQL AB ship themselves, but the third party Engines 'PrimeBase XT' or just PBXT and SolidDB are now available with Foreign Key support. Also the Falcon storage engine by MySQL AB will have FK's functional enabled at a later point of its development. Currently SQLyog supports Foreign Keys with both InnoDB and Primbase XT and SolidDB.

Foreign Key constraints are (almost) functionally identical to 'relationships' in some databases like Microsoft Access.

Depending on the MySQL version and the platform where it is running, InnoDB may or may not be available, and PrimeBase XT will only be available where it has been installed as a 'plugin' (addition) to the server as shipped by MySQL AB. InnoDB is included in every recent binary distributed by MySQL AB. However some ISP's disable it (completely or for some (the cheapest!) 'hosting plans' only). If the system variable 'have_innoDB' has the value of "YES" it is available. You can check this from the SQLyog menu ... tools .. show .. variables. For PBXT and SolidDB the system variable is 'have_PBXT' and 'have_soliddb''

Before attempting to create Foreign Keys, you should ensure that all the tables involved are either InnoDB, PBXT or SoldiDB tables - and the same type. You cannot have a InnoDB 'parent' and a PBXT 'child' in a FK relationship.

If the tables are different types you can use the 'Change tabletype ..' from the table menu or context menu.


What is Foreign Key | SQLyog MySQL GUI

﻿ What is Foreign Key | SQLyog MySQL GUI

What is FK?

A foreign (FK) is a column or combination of columns used to establish and enforce a link between the data in two tables. A link is created between two tables by adding the column or columns that hold one table's primary key values to the other table. This column becomes a foreign key in the second table.

You can create a foreign key by defining a foreign key constraint when you create a table.

A Sample Database

To understand the concept in a better way we create two tables with the following structure -

Table - publishers

pub_id int PRIMARY
pub_name char
city char
state char
country char

Table - titles

title_id int PRIMARY
title char
type enum
pub_id int
price double
advance double
royalty int
ytd_sales bigint
notes blob
pubdate date

In the above example, the titles table has a link to the publishers table because there is a logical relationship between books and publishers. The pub_id column in the titles table matches the primary key column of the publishers table. The pub_id column in the titles table is the FK to the publishers table. Publishers table is 'parent' and Titles table is 'child' or 'referencing' table.

Although the primary purpose of a FK constraint is to control the data that can be stored in the 'child' table, it also controls changes to data in the 'parent' table. For example, if the row for a publisher is deleted from the Publishers/'parent' table, and the publisher's ID is used for books in the Titles/'child' table, the relational integrity between the two tables is broken; the deleted publisher's books are orphaned in the titles table without a link to the data in the publishers table. A FK constraint prevents this situation. The constraint enforces referential integrity by ensuring that changes cannot be made to data in the 'parent' table if those changes invalidate the link to data in the 'child' table. If an attempt is made to delete the row in a 'parent key' or to change a referenced value in the parent key, the action will fail if the deleted or changed referenced value corresponds to a value in the FK constraint of another table. To change or delete a row in a FK constraint successfully, you must first either delete the FK data in the child table and/or change the FK data in the 'parent' table, thereby linking the FK to different 'parent'/referenced data.

It is common (and practical in most situations) to have a setup as the above example: the referenced value in the 'parent' table is also the Primary Key for that table. But more setups are possible.

For more information see The SQLyog Schema Designer.


Foreign Key In InnoDB | SQLyog MySQL GUI

﻿ Foreign Key In InnoDB | SQLyog MySQL GUI

FK In MySQL

No matter what table type (of those supporting FK's) are used for defining the FK relationship/constraint, both tables involved in the relationship have to be same type and there must be an index where the foreign key and the referenced key are listed as the first columns. MySQL does not always auto-create indexes on foreign keys or referenced keys: sometimes you have to create them explicitly. It depends on the MySQL version.

Corresponding columns in the foreign key and the referenced key must have similar internal data types so that they can be compared without a type conversion. The size and the signedness of integer types have to be the same. The length of string types need not be the same.

Starting from MySQL version 3.23.50 you can also associate the ON DELETE CASCADE or ON DELETE SET NULL clause with the foreign key constraint. If ON DELETE CASCADE is specified, and a row in the parent table is deleted, then InnoDB automatically deletes also all those rows in the child table whose foreign key values are equal to the referenced key value in the parent row. If ON DELETE SET NULL is specified, the child rows are automatically updated so that the columns in the foreign key are set to the SQL NULL value. Corresponding ON UPDATE options are available starting from 4.0.8.


Foreign Key In SQLyog | SQLyog MySQL GUI

﻿ Foreign Key In SQLyog | SQLyog MySQL GUI

FK In SQLyog

SQLyog treats one of the tables in the relationship as the child and the other parent. Using SQLyog you create relationships on the child table that will refer to the columns of the parent table.

First of all you need to create correct indexes on the columns of both the tables. You can do this from the Index tab.

Select the Child table in the Object Browser and press F10 or select Relationships/Foreign Keys from the popup menu or click on the foreign keys subtab in the Create Table tab.

Note: If the table is not of InnoDB, Soliddb or PBXT types, SQLyog will give an error…You can change the handler of table by selecting it from the Table Engine combo box.


Create Foreign Key | SQLyog MySQL GUI

﻿ Create Foreign Key | SQLyog MySQL GUI

Create A Relationship

Create A Relationship

Select the Child table in the Object Browser and press F10 or select Relationships/Foreign Keys from the popup menu or click on the foreign keys subtab in the Create Table tab to create a foreign key.

Select the parent or the Reference Table from the combo box.

Specify the FK name and select the corresponding columns of the current Table. Each cell in the grid will popup the corresponding columns for the table.

If you want to create an FK on multiple columns just select those columns from the dialog box. Also select refrenced database, refrenced table and refrenced columns. After you are done, press Save.

Note: If you want to set rules for On Delete or On Update operations then you can do it from here.


Deleting Foreign Key | SQLyog MySQL Manager

﻿ Deleting Foreign Key | SQLyog MySQL Manager

Delete A Relationship

Delete A Relationship

To delete an FK, select a table from the Object Browser,

1) Click on "Relationships/Foreign Keys" icon, or
2) Right click on the table(in the Object Browser) and select the menu option "Relationships/Foreign Keys", or
3) Press F10 key.

This opens up an Alter Table tab with the focus on Foreign Keys sub tab.

Click on Delete button in the toolbar to delete the selected relationship.

Before MySQL/InnoDB-4.0.13, MySQL does not provide you with a one-query-method to delete a FK. MySQL and InnoDB docs suggest dropping the table and recreating the table without the relationship. If you have tables with lots of columns and data, this process really becomes tedious.

However, SQLyog let you overcome this pain, and does all the steps internally. You are just required to select Delete. Internally, SQLyog does this using a 11-step process. If you want to delete an FK, just select the relationship from the Grid and press Delete.

Since, this process can result in loss of data SQLyog will ask for confirmation. Press Yes at your own risk.


Advanced Tab | SQLyog MySQL Manager

﻿ Advanced Tab | SQLyog MySQL Manager

Advanced Tab

Advanced Tab

You can also specify advanced table properties during the creation time (avg. row length, checksum, etc.) For this, click on the Advanced Properties tab. This again depends on MySQL versions used as explained above.

If you want to see the CREATE TABLE SQL-statement in advance that SQLyog will send to the server click the SQL Preview tab. If the data entered is incorrect, you can revert the changes by clicking the Revert button else click on Save to create the table.


Preview | SQLyog MySQL GUI

﻿ Preview | SQLyog MySQL GUI

Preview

Preview

To see the SQL query generated for create/alter table click on the Preview tab.


Objects | SQLyog MySQL Tool

﻿ Objects | SQLyog MySQL Tool

Others

With the term 'Others' we refer to all information that a database can contain that are not database Tables. Most objects do not contain DATA, but various types of code and 'rules' that control what the Server will do with the data in certain contexts.

The most important of these objects are Views, Stored Procedures, Functions, Triggers and Events. With SQLyog you can work with them all. To create, modify or drop these objects use the menu item Others. You may also use the context menu of the 'parent object' (that is a database for Views, Stored Procedures, Functions and Events and a table for Triggers).

In this context we also classify Columns and Indexes as 'Others'. Whenever a Column or Index is selected in the Object Browser the Others menu will give you the same options as the context menu of that Object.


Views | SQLyog MySQL Management Tool

﻿ Views | SQLyog MySQL Management Tool

Views

A View is a virtual table based on the result-set of a SELECT statement. A view contains rows and columns, just like a real table. The fields in a view are fields from one or more real tables in the database. You can add SQL functions, WHERE, and JOIN statements to a view and present the data as if the data were coming from a single table.

Views (including updatable views) are implemented in the 5.0 version of MySQL Server, and SQLyog offers you tools to manage the views.


Create View | SQLyog MySQL Management Tool

﻿ Create View | SQLyog MySQL Management Tool

Create View

To create a new view, use the menu item Others -> View -> Create View.

A dialog will appear to request the view name. Once you have entered the name, a template for the view creation will be typed in a separate tab of the SQL Window. The template contains a command to drop the view in case it already exists and a command for the view creation where you have only to add your required selection of columns. You can use the WHERE clause to set selection conditions.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for views creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Alter View | SQLyog MySQL Management Tool

﻿ Alter View | SQLyog MySQL Management Tool

Alter View

To alter an existing view, select it in the Object browser and use the menu item Others -> View -> Alter View or press F6.

A template for the view alteration will appear in a separate tab of the SQL Window. The template contains a command to drop the view in case it already exists and a command for the view re-creation where you can specify source fields and their names in the target view. Use the WHERE clause if you need to set selection conditions.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for views creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Drop View | SQLyog MySQL Management Tool

﻿ Drop View | SQLyog MySQL Management Tool

Drop View

To drop an existing view, select it in the Object browser and use the menu item Others -> View -> Drop View. Then confirm the operation in the appeared dialog.


Rename View | SQLyog MySQL Management Tool

﻿ Rename View | SQLyog MySQL Management Tool

Rename View

To rename a view, select it in the Object browser and use the menu item Others -> View -> Rename View or simply click its name in the Object browser or press F2.


Delimiters | SQLyog MySQL Client

﻿ Delimiters | SQLyog MySQL Client

Delimiters

SQLyog supports the use of 'delimiter' statements. This is required in order to support Objects like Stored Procedures, Triggers etc. But the 'delimiter' statement need not be used in that context. It can be used anywhere.

A delimiter is a character or a sequence of characters used to separate SQL statements. The DEFAULT delimiter in SQL is the ";" (semicolon), but it can be changed using the 'delimiter' statement like

DELIMITER |

or

DELIMITER ;;

.. and now respectively the "|" character ('pipe') or the ";;" (double colon) character sequence is the delimiter.

The usage of DELIMITER statements is discussed in Stored Procedures, Functions, Triggers and Events. The important thing here is:

"delimiter ..." is (some kind of!) a statement, but it is NOT a SQL-statement.

This means that the server does not understand the 'delimiter' word. The client (SQLyog) uses delimiters to separate statements before they are sent to the server. That is how simple it is! Neither the delimiter statement nor the delimiter itself is sent to the server.


Stored Procedures | SQLyog MySQL GUI

﻿ Stored Procedures | SQLyog MySQL GUI

Stored Procedures

A Stored Procedure (also a Stored Proc) is a sub-program which is physically stored within a database in compiled form under a certain name. This allows you to share the procedure between a number of programs.

Stored Procedures are implemented in the 5.0 version of MySQL Server, and you can work with them in full using SQLyog.


Create Stored Procedure | SQLyog MySQL GUI

﻿ Create Stored Procedure | SQLyog MySQL GUI

Create Stored Procedure

To create a new stored procedure, use the menu item Others -> Stored Procedure-> Create Stored Procedure or use the database context menu.

Enter the procedure name in the appeared dialog, and SQLyog will generate a template for your stored procedure in a separate tab of the SQL Window. Fill the template as necessary for you. Note that the template contains the command to drop the procedure before its creation is case it already exists. Also the most common options are displayed in this template. If you want to use the defaults just leave it commented out.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for stored procedures creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.

To create a useful Stored Procedure there must be some code in between the BEGIN .. END sequence, which can be a valid SQL statement. If there are more SQL statements here, then they should be separated by ";" (semicolon). Inside a Stored Procedure the delimiter is always ";", here it cannot be changed. This explains why the delimiter needs to be changed (to "$$") outside the Stored Procedure before creating it - if not SQLyog (or any client) would 'think' that the SQL statement stops after the first line after "BEGIN" rather than "END". When setting the DELIMITER to "$$" outside the Stored Procedure, SQLyog will understand that the complete CREATE PROCEDURE statement is a single statement.

Also note that when you are executing this example you only create the Stored Procedure (the code is stored in the database itself). To execute it you must use the CALL SQL-statement like 'call myproc()' or 'call myproc({parameter list})'.


Alter Stored Procedure | SQLyog MySQL GUI

﻿ Alter Stored Procedure | SQLyog MySQL GUI

Alter Stored Procedure

To alter an existing stored procedure, select it in the Object browser and use the menu item Others -> Stored Procedure -> Alter Stored Procedure or press F6.

A template for the procedure alteration will appear in a separate tab of the SQL Window. The template is similar to that used for a stored procedure creation.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for stored procedures creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Drop Stored Procedure | SQLyog MySQL GUI

﻿ Drop Stored Procedure | SQLyog MySQL GUI

Drop Stored Procedure

To drop an existing stored procedure, select it in the Object browser and use the menu item Others -> Stored Procedure -> Drop Stored Procedure. Then confirm the operation in the appeared dialog.


Functions | SQLyog GUI for MySQL

﻿ Functions | SQLyog GUI for MySQL

Functions

Similar to stored procedures, user-defined Functions are physically stored within a database in compiled form under a certain name. This allows you to share the functions between a number of programs. The distinct feature of functions is that they can return a value as a result of their work.

Functions are implemented in the 5.0 version of MySQL Server, and you can completely manage them with SQLyog.


Create Function | SQLyog GUI for MySQL

﻿ Create Function | SQLyog GUI for MySQL

Create Function

To create a new function, use the menu item Others -> Function -> Create Function.

Enter the function name in the appeared dialog, and SQLyog will generate a function template in a separate tab of the SQL Window. Fill the template as necessary for you. Note that the template contains the command to drop the function before its creation in case it already exists.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for functions creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Alter Function | SQLyog GUI for MySQL

﻿ Alter Function | SQLyog GUI for MySQL

Alter Function

To alter an existing function, select it in the Object browser and use the menu item Others -> Function -> Alter Function or press F6.

A template for the function alteration will appear in a separate tab of the SQL Window. The template is similar to that used for a function creation.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for functions creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Drop Function | SQLyog GUI for MySQL

﻿ Drop Function | SQLyog GUI for MySQL

Drop Function

To drop an existing function, select it in the Object browser and use the menu item Others -> Function -> Drop Function. Then confirm the operation in the appeared dialog.


Triggers | SQLyog MySQL Client

﻿﻿ Triggers | SQLyog MySQL Client

Triggers

A Trigger is a piece of code that is executed in response to a data modification statement - that is, an insert, update, or delete - and usually ensures consistent behavior of the database. Each trigger refers to a certain table in the database.

Rudimentary support for triggers has been included beginning with MySQL 5.0.2., and SQLyog provides the functionality to manage them.


Create Trigger | SQLyog MySQL Client

﻿ Create Trigger | SQLyog MySQL Client

Create Trigger

To create a new trigger, switch to the Object browser and select the table to which the trigger refers; then use the menu item Others -> Trigger -> Create Trigger.

Enter the trigger name in the appeared dialog, and SQLyog will generate a trigger template in a separate tab of the SQL Window. Fill the template as necessary for you specifying the trigger event (BEFORE/AFTER INSERT/UPDATE/DELETE). Note that the template contains the command to drop the trigger before its creation is case it already exists.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for triggers creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Alter Trigger | SQLyog MySQL Client

﻿ Alter Trigger | SQLyog MySQL Client

Alter Trigger

To alter an existing trigger, select it in the Object browser and use the menu item Others -> Trigger -> Alter Trigger or press F6.

A template for the trigger alteration will appear in a separate tab of the SQL Window. The template is similar to that used to create a trigger; it contains a command to drop the trigger in case it already exists and a command for the trigger re-creation.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for triggers creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.


Drop Trigger | SQLyog MySQL Client

﻿ Drop Trigger | SQLyog MySQL Client

Drop Trigger

To drop an existing trigger, select it in the Object browser and use the menu item Others -> Trigger -> Drop Trigger. Then confirm the operation in the appeared dialog.


Rename Trigger | SQLyog MySQL Client

﻿ Rename Trigger | SQLyog MySQL Client

Rename Trigger

To rename a trigger, select it in the Object browser and use the menu item Others -> Trigger -> Rename Trigger or simply click its name in the Object browser or press F2.


Events | SQLyog MySQL Client

﻿ Events | SQLyog MySQL Client

Events

An Event is a scheduled job executed by the MySQL server itself. Events are supporoted from MySQL 5.1. If your MySQL version does not support events you should note that SQLyog has the 'Notifications Service' facility which in most situations will make it possible for you to achieve the same.

The differences between Events and Notifications Service can be summarized as follows:

  • Events require specific server versions - Notifications Service works with every MySQL version.

  • Events are executed by the server without the need of any external client to connect (but the server does actually start a client instance internally) - Notifications Service creates an ordinary client connection.

  • Events may only execute SQL statements. It cannot perform file system operations, invoke external binaries etc. - Notifications Service can only execute SQL. As it is managed by the Operating System and not the MySQL server, it can be executed by a batch job or an application which copies files.

  • Events have no notifications feature - Notifications Service has (that is why it is named as it is!).

You can see that each has advantages and drawbacks. They may also be combined. For instance you can have an Event scheduled at close interval (say 1 minute) that updates a table used by a Notifications Service Job executed at larger intervals (like once per hours).


Create Event | SQLyog MySQL Client

﻿ Create Event | SQLyog MySQL Client

Create Event

To create a new event, use the menu item Others -> Event-> Create Event or use the database context menu.

Enter the event name in the appeared dialog, and SQLyog will present a template for your Event in a separate tab of the SQL Window. The template contains a 'skeleton' for defining three common types of Event:

  • Events that runs only once

  • Events that run forever after creating

  • Events defined to start and/or stop at a specified time.

Uncomment the one that is closest to what you want and also uncomment any non-default options you want to use for the Event.

Use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for 'stored programs' creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.

To create a useful Event there must of course be some code in between the BEGIN .. END sequence. That can be any valid SQL. If there are more SQL statements here they must be separated by ";" (semicolon). To conclude the Event code you must use a user-defined DELIMITER as the default SQL delimiter (;) is used between BEGIN... END internally in the Event code. More details about this in the paragraph on delimiters.


Alter Event | SQLyog MySQL Client

﻿ Alter Event | SQLyog MySQL Client

SQLyog

Alter Event

To alter an existing event, right-click it in the Object browser or use the menu item Others -> Event -> Alter Event or press F6.

The current Event definiton will appear in a separate tab of the SQL Window. Change what you want and next use the toolbar buttons or hotkeys to execute the queries. As editor tabs of a special kind are used for 'stored programs' creation/alteration, pressing both F5 and Shift+F5 keys leads to execution of all queries present in the SQL window.

If you want to use the template for Create Event you may also open the Create Event template and simply replace the word CREATE with ALTER.

The first option is easiest if you only want to change a few details of the Event code. If you want to completely redesign the schedule you may prefer the second option.


Drop Event | SQLyog MySQL Client

﻿ Drop Event | SQLyog MySQL Client

Drop Event

To drop an existing event, right click it in the Object browser and use the menu item Others -> Event -> Drop Event. Then confirm the operation in the appeared dialog.


Rename Event | SQLyog MySQL Clien

﻿ Rename Event | SQLyog MySQL Clien

Rename Event

To rename an event, right-click it in the Object browser and use the menu item Others -> Event -> Rename Event or simply click its name in the Object browser or press F2. 'Rename Event' is special variation of 'Alter Event'.


SQLyog SchemaDesigner | SQLyog MySQL GUI

The SQLyog Schema Designer

The Schema Designer (introduced in SQLyog version 6.1) is a visual interface where tables and table structures can be defined, displayed and manipulated. The Schema Designer provides a convenient graphical way to perform common operations as an alternative to the menu-based way of operation that was always supported. Also the Schema Designer provides a graphical overview of (complete or only parts of) your databases.

The Schema Designer implementation has two parts:

1) A Tab type displayed in the Query Editor area of the program window. This Tab contains a single element only: a 'canvas' (drawing area). You can configure SQLyog to display one such TAB when the program starts in program's 'Preferences'. If you need more such TABs you can anytime open more from the 'file' menu.

2) An XML-based data file format for storing information generated from the Schema Designer.

The Schema Designer Tab

The canvas of the Schema Designer is very similar to the canvas of the QueryBuilder and their operation is almost identical. You can move existing tables from the Object Browser into the canvas by double-clicking it or by drag'n'drop and you can move the tables around and resize the table symbols on the canvas.

For the rest of this paragraph we will refer to a Schema Designer Tab with table(s) (and what else information is supported) on it as a 'LAYOUT'.

Table operations

When a table is added to the canvas, the table symbol will include a toolbar displaying small icons that let you perform the operations:

  • Alter Table

  • Manage Indexes

  • Manage Foreign Keys

  • Change the table view to display only the column name or both the column name and data type

The same operations are available from the context menu for each table. Actually this context menu does the same as the 'table' entry in the program main menu and the context menu for a table in the Object Browser. The graphical and the menu-based way of doing things are functionally identical.

Also a context menu is available on the canvas itself for where you can add existing tables to the canvas or create a new table for the selected database. To create a table, select 'CREATE TABLE' from the canvas context menu. You will see that the CREATE TABLE dialogue will open. Just enter the parameters describing the table definition and close the CREATE TABLE dialogue as you normally would. The table will be created in the database, the Object Browser updated and a table symbol will be added on the canvas.

Also you can anytime 'Refresh' the canvas from the context menu.

Note: This feature is available in SQLyog Enterprise and Ultimate.


SQLyog Schema Designer Concepts | SQLyog MySQL GUI

The SQLyog Schema Designer

Concepts

You have already now seen two concepts in work that are basic design concepts of the SQLyog Schema Designer:

1) Whatever you add or change from the Schema Designer will be stored to the database exactly the same way as when you work with the menu's of the program. There is no need to 'upload', 'apply', 'synchronize' the LAYOUT or anything like that. SQLyog Schema Designer is a graphical implementation of direct client functionalities. We work with the database that we are connected to - not with any kind of 'model' internal for the program

(but note that if you want a 'model' before applying the changes to the 'real' or 'live' database you can simply use another database as a 'model' - and use Schema Synchronisation to synchronise from the 'model database' to the 'real database'. The two databases need not be on the same server).

2) Whenever an operation will need to open another dialog to get additional information from the user, you will see that the Schema Designer uses the same dialog as the rest of the program.

Zooming the canvas can be done using the dropdown or CTRL+mouse scroll button. Canvas can be saved as .bmp graphics and printed. There is an option to see how the print will split into more pages (using the settings of the current default printer). These options are in the canvas context menu.

Defining Foreign Keys ('relationships')

The image above shows a canvas with tables added. You will also see that some lines are drawn between some of the tables. In the Schema Designer such line defines a FOREIGN KEY between two TABLES in the database (whereas in the Query Builder it defines a JOIN-condition for a query RESULT). When drawing a line from one table to another the common 'MANAGE FOREIGN KEY' tab will open and 'propose' you to create the FK where the 'child' column is the column from where you draw. The 'parent' column will be proposed according to the rules:

* If there is a Primary Key on the parent table it will be proposed.

* If there is no Primary Key on the parent table it will propose the first Unique Key found (if any) in table definition.

That procedure would find the 'parent' column of the Foreign Key that would make sense in most situations. If you need something more special then just change in the 'MANAGE FOREIGN KEY' tab.

When a line is drawn in the canvas "1" and "infinity" symbols will display at either end of the line. This symbol indicates what kind of index exists on the columns: "1" indicates a PRIMARY KEY or a UNIQUE index - "infinity" symbol indicates a non-UNIQUE index. Also the line has a context menu from where you can drop and edit the Foreign Key.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Schema Design XML file | SQLyog MySQL GUI

The SQLyog Schema Designer

The Schema Design XML file

From the Schema Designer TAB you can save your work to a file. The file will contain two types of information:

1) The position on the canvas and the size of the table symbol for every table that has been defined for this LAYOUT. This is used (of course) when opening a saved LAYOUT. When the Schema Designer TAB is selected the 'file' menu will by default handle Schema Design XML files for open, save etc. You can also use the canvas context menu.

2) The CREATE statement for every table added to this LAYOUT and information about the database it belongs to. This is used when opening a LAYOUT to verify that the tables and the LAYOUT are still 'in sync'. Some other client or session may have changed (DROPPED or ALTERED) the table(s), since the LAYOUT was last saved. In case they are found to be 'out of sync' the program will give you options to either change the LAYOUT or the table(s). Actually a Schema Design XML file can be distributed to other machines or users -first time when it is opened you only need to select to (re)build the tables that are non-existent or different when the program prompts you for your decision on what to do (but of course only STRUCTURE, not DATA is handled by the Schema Designer).

Note that once the LAYOUT has been loaded successfully into the canvas the CREATE statements in the file are not used anymore, as from now we will work directly against the MySQL database as explained above.

If you have changed the LAYOUT and not saved it after latest change, you will be prompted if you want to save the changes when the TAB is closed (or the program is). You should normally save (to keep the LAYOUT 'in sync' with the changes you just performed on the database/the tables), but you may undo what you have been doing by NOT saving the file and next opening the file again in another Schema Designer TAB. When prompted for how to solve 'out-of-sync' problems now choose keep the file as it is and change tables instead. We will look into details about this below.

This dialog will display when opening a Schema Design XML file:

First situation: Perfect match.
If you select an existing database the program will validate that the file and the database are 'in sync'. The LAYOUT will display in the Schema Designer TAB after you press 'Continue'.

Second situation: Creating database using the Schema Design XML file.
To perform this you can open the file in a new Database, say 'testsd',

then you will get a dialog like this,

Again just select the option that you want and the Schema Designer TAB will be populated according to your choice.

Note that this is the same thing that happens when you distribute a Schema Design XML file to other users or computers.

Third situation: Adding table to an existing database as defined in the Schema Design XML file.
This is very similar to the second situation described. You select the existing database that should be updated. The list in the above image will list only those tables which don't exist in the database already. Select which of the two options you want.

Fourth situation: Table names match, but parameters (charset, engine etc.) or columns don't match perfectly in one on more tables...
If some tables exist in both the Schema Design XML file and the selected database, but the CREATE statement is different (likely because the number, order or types of columns do not match) this dialog will appear:

Again just select the option that you want and proceed.

Note: This feature is available in SQLyog Enterprise and Ultimate.


SchemaDesigner Summary | SQLyog MySQL GUI

The SQLyog Schema Designer

Flexibility of use:

You should notice that the implementation lets you to use the Schema Designer in various ways and it is totally your decision how you will use it. We do not 'impose' anything on you! For instance,

* You can have a single LAYOUT that is complete for a database.

* You may as well have more LAYOUTs for a database. Every table can be added to one, more than one or to no LAYOUTs. There may be tables in a database that are not added to any LAYOUT.

Limitations:

Finally you should also note that,

* The Schema Designer canvas and the SchemaDesign XML file can only contain tables from a single database.

* Currently only TABLES are supported by the Schema Designer - not other database objects like VIEWs and STORED PROCEDURES for instance.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit | SQLyog MySQL Manager

﻿ Migration Toolkit | SQLyog MySQL Manager

Import External Data

SQLyog provides Import External Data to streamline the transfer of data from any ODBC compliant data source to MySQL. To Import data from any ODBC compliant data source, select Powertools -> Import External Data or press Ctrl+Alt+O.

The import mechanism provides powerful and effective features, such as:

  • Incremental import: Using special SQL statements and Triggers you can perform conditional data import. For example, you can run the import procedure daily and order it only to import data that appeared during the last day.
  • Import sessions storage for future use: You can save your import session with all its settings and preferences and later use it repeatedly.
  • Import sessions scheduling: You can order your import session to be scheduled, and SQLyog will automatically create a standard MS Windows scheduled task where you can specify your schedule preferences depending on your needs.

Import External Data requires an appropriate ODBC-driver (matching the data source) installed on the system where SQLyog is running. There are two ways how SQLyog can use such driver:

  • by using a DSN setting. This option can be used for all ODBC data sources no matter if the data source is available on local or a remote system.

  • or by specifying a data source file. In this case the ODBC driver details will be passed to the program transparently for user. This option can be used only if the data soruce is on local system and only for specific type of data sources. Currently supported files are: plain text files (.txt, .csv etc.) Microsoft Excel files (.xls) and Microsoft Access files (.mdb).

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit - Choose DataSource | SQLyog MySQL GUI

﻿ Migration Toolkit - Choose DataSource | SQLyog MySQL GUI

Select session

As the first step you should define if you wish to start a new import session or to edit a previously saved one.

Note: This feature is available in SQLyog Enterprise and Ultimate.


New ODBC DSN (Data Source Name) | SQLyog MySQL GUI

﻿ New ODBC DSN (Data Source Name) | SQLyog MySQL GUI

Here, we will first see how to migrate from a data source using the option to specify a file or folder. Use the file option for .xls or .mdb files and the folder option for plain text files (each file of supported type in that folder will then be considered data for different tables by the text-ODBC-driver).

Import from File

Import from Folder

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Choose Data Source | SQLyog MySQL GUI

﻿ Migration Toolkit Choose Data Source | SQLyog MySQL GUI

Here we will see how to migrate from a data source using the option to specify a DSN. You configure such DSN from Windows Control Panel... Administrative Tools... Data Sources in advance or the Import External Data wizard will give you an option to do this in the process.

Choose Data Source

To use a preconfigured DSN you may select from one of the System/User DSNs displayed. If the drop-down list of available System/User DSNs does not contain the one you need, Press the button New to add it. As an alternative, you may specify a File DSN.

In the boxes below specify the Username and the Password for the source database, if required.

The rest of this paragraph will take you through a step by step guide to Import data from MS SQL Servers to MySQL. The example used is the 'PUBS' database that ships as a demo database with SQL server.

Note: This feature is available in SQLyog Enterprise and Ultimate.


New ODBC DSN (Data Source Name) | SQLyog MySQL GUI

﻿ New ODBC DSN (Data Source Name) | SQLyog MySQL GUI

New ODBC DSN (Data Source Name)

If you have selected to add a new ODBC Data Source Name (DNS), a Create New Data Source dialog will appear.

For import purposes select either User Data Source or System Data Source option. With the former you will create a data source usable only by you at the computer you are currently using, with the latter — a data source usable by all users of this computer.

Next specify a basic driver for your data source. Assume you need to import from and Oracle DB, then select the Oracle driver.

Check the data source parameters in the following window and press Finish if they are correct. Some drivers (e.g. the Oracle one) may need more details for a data source creation; additional windows will automatically appear after you press Finish.

Due to the specifics of Oracle driver, you will have to specify additional parameters for the data source.

Define a name for your data source, its description, Oracle TNS service name and user ID (user name) to access the basic Oracle database.
At the tabs below you can set other options as necessary.

To make sure your connection works you can press the button Test connection on the right. Type the password valid for the specified user ID and press OK to get the result.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Select database | SQLyog MySQL GUI

﻿ Migration Toolkit Select database | SQLyog MySQL GUI

Select database

Next you need to define the destination MySQL database. The procedure is similar to the one you follow when connecting to your basic MySQL server. You can select an existing connection in the drop-down box Copy Connection From at the top of the window.

For more details you can refer to the section Getting started.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit-Specify data to copy | SQLyog MySQL GUI

﻿ Migration Toolkit-Specify data to copy | SQLyog MySQL GUI

Specify data to copy

From this screen you can specify whether to copy entire tables from the source, or you can choose to enter a SQL query to select particular records.

If you choose to use a query, at the next page there's a box where you should enter the SQL statement. For further description on entering a query click here.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit - Copy tables from the datasource | SQLyog MySQL GUI

﻿ Migration Toolkit - Copy tables from the datasource | SQLyog MySQL GUI

Copy tables from the data source

Here you will see the list of tables available for import. To select the tables you want to be imported, check boxes next to their names.

Please note the following:

  • If are going to import a table with its Foreign Keys, you must also import the tables to which these keys are linked. If these tables in their turn have FKs, the successive linked tables must be imported as well.
  • If you are using a 30-days trial version of SQLyog, you are only allowed to import two tables at a time.

After you have selected tables to import, you will see several buttons appeared next to each table. With these buttons you can call dialogs to specify more detailed settings for your import session.

  • The button Map opens the Column Mappings and Transformations Dialog. Using it you can select the columns to import to your target tables and set column attributes.
  • The button Advanced opens the Advanced Options Dialog. With this dialog you can give directions as for treating existing tables and duplicated data and use the unique feature of Triggers on import source.
  • The button WHERE opens the SQL WHERE Dialog. Here you can specify a WHERE clause to import only certain rows from your source tables.
  • The option SET FOREIGN_KEY_CHECKS = 0 should be checked while importing to a table having a Foreign Key -dependency on another table. There is no way to ensure that operations on 'parent' and 'child' tables are performed in an order that does not raise an error during import. But as always when doing SET FOREIGN_KEY_CHECKS = 0 the user must ensure that the operation does not result in broken references.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit - Column Mappings And Transformations | SQLyog MySQL GUI

﻿ Migration Toolkit - Column Mappings And Transformations | SQLyog MySQL GUI

Column Mappings And Transformations

The button Map opens the Column Mappings and Transformations Dialog as shown in below:

By default SQLyog will map all the columns from the source table. If you do not want to import a column, uncheck the box to the left from its name.

Using the Column Mappings and Transformations dialog you can change the properties of target fields that will be imported in MySQL. For example, you can:

  • Define a different name for the column in the grid field Destination.
  • Set the destination column Type, Length and Default value.
  • Indicate that the column is a Primary one.
  • Indicate that the column is a Binary one. This attribute can be used for character field types (like CHAR, VARCHAR, TEXT, etc.) to cause binary collation for the column character set.
  • Indicate that the column is a Not Null one.
  • Indicate that the column contains Unsigned numbers.
  • Indicate that the column contains Auto Increment values (for integer columns). When you insert a value of NULL or 0 into an indexed AUTO INCREMENT column, the column is set to the next sequence value.
  • Indicate that the column contains Zero filled values to have the default padding of spaces replaced with zeros. For example, if a column is declared as INT(5) ZEROFILL, a value of 1 will be retrieved from this column as 00001.

Note that some essential properties set for the fields in the source tables cannot be overridden during an import session.

The button Edit SQL over the columns list opens the window where you can manually edit the CREATE TABLE statement. The button Clear defaults clears the default values of all the columns that have been checked for import in a particular table. This option becomes useful in the case where some ODBC-source defaults do not work with MySQL.

Note: Once you have modified the query manually, the CREATE TABLE statement will be used to create the table irrespective of the column mapping done in the previous dialog. To cancel the changes in the CREATE TABLE statement, just click the Re-Generate button.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Advanced Options | SQLyog MySQL GUI

﻿ Migration Toolkit Advanced Options | SQLyog MySQL GUI

Advanced Options

The button Advanced opens the Advanced Options Dialog.

In the dialog tab DDL/DML Options you can tell SQLyog how to behave if it finds resembling data at your MySQL destination.

SQLyog's import external data provides you with the following options to import data from the source.

  • Drop And Recreate, to have the existing table completely replaced.
  • Import Into Existing Table, to have the existing table appended with the records of the table being imported. Before importing if the contents of the table need to be truncated then select the option truncate table data. This truncates all the data present in the target table and the option to Truncate is in particular useful when the job changes the table structure in target as compared to source. If the data to be imported is a duplicate of the data in the destination table then, any of these options can be selected:
    • Update With Source, to have the existing data completely replaced.
    • Keep Target Data, to have the existing data kept as it is.
    • Abort, to skip importing the table if duplicate records are found and proceed to the following tables. All rows already imported to the table will be kept.
  • Abort, to skip importing the table if the similar one already exists and proceed to the following one.

There is also the 'Table type' setting where you should specify a storage engine type for new tables created by Import tool. Note, that if you want to import foreign keys you must select an ENGINE supporting such. InnoDB and some 3rd party ENGINES (like PBXT) have this option.

If you just need the table structure to be created, check the option Import table structure only.

Below that, you can indicate if you wish to import FKs (Import Foreign keys) and other indexes (Import Index) defined for the source tables. Note that if you select to import FKs, other indexes will be automatically imported as well.

Apply changes to all tables: When this option is selected, same import settings will be applied to all tables in one operation.

At the Advanced Option Dialog's tab Trigger Options you can setup SQLyog's powerful feature: Triggers on import source.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Trigger Options | SQLyog MySQL GUI

﻿ Migration Toolkit Trigger Options | SQLyog MySQL GUI

Trigger Options

At the tab Trigger Options of the Advanced Options Dialog you can setup and use the unique feature of Triggers on import source.

The essence of Triggers is that they allow you to introduce changes in a source row after it has been successfully imported to your destination MySQL table.

The options are:

  • To modify imported rows in the source. For this, check the option Update source row, then specify the row in the column Source of the below grid and next to it define the value you need to assign. As a value you can use nominal values (like 12, 'imported', etc.) or single-row functions (like SYSDATE, REPLACE, etc.)
    In the box under the grid you can see the resulting statement. With the button Parse you can check if it is correct. Please remember that the values must be syntactically correct, that is use quotes for strings, etc.

    With the triggers functionality you can even use functions and expressions. The syntax used here and name and use of functions must follow the syntax of the SQL-version ("dialect") of the source database and the related ODBC-driver. A few simple examples of the use of this:

* you can increment a numerical field (call it "number_of_imports") by adding 1 to that field.
* you can write current date and time to a datetime variable type using some datetime() function. This is particularly useful for incremental imports.
* you can use conditionals ("if ..") and any other language construction allowed in expressions with the source database. A simple example: use it to reset negative values to 0 (zero) and leave positive values as they are.

  • To delete imported rows from the source. For this, check the option Delete source row.

The most obvious application of this feature is that you can mark the rows that have already been imported by assigning a certain value to some column directly in the source. Additionally, combined with use of a SQL Where statement, triggers allow arranging incremental import sessions.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit SQL Where | SQLyog MySQL GUI

﻿ Migration Toolkit SQL Where | SQLyog MySQL GUI

SQL Where

The button WHERE opens the SQL WHERE Dialog:

By specifying a WHERE clause in this dialog you tell SQLyog to import only rows that satisfy the criteria set by you. Please note that the WHERE-clause must be syntactically correct on the source DBMS to where it is sent. This may differ from MySQL syntax in some respects. This applies for the syntax used when quoting identifiers and when using operators and functions and all sorts of expressions in the WHERE-clause. Also the word WHERE itself must be omitted as SQLyog will append it at the beginning of the string you specify.

Apart from being obviously useful when you need to import only certain rows from your source, SQL Where feature has one more application. In combination with Triggers on import source, it allows arranging incremental import sessions.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Incremental Import Sessions | SQLyog MySQL GUI

﻿ Migration Toolkit Incremental Import Sessions | SQLyog MySQL GUI

Incremental Import Sessions

Quite often you may face the necessity to repeatedly import data from the same external ODBC source to your MySQL database. Besides, usually you are most likely interested to get only the "fresh" rows, that is the ones which were not imported during the previous import sessions. This is what is called incremental import.

The main problem in organizing incremental import is how to distinguish fresh rows from the imported ones. Import External Data offers you a simple and effective solution for this. With the following two features you can arrange your incremental import sessions:

  • Use the Triggers feature to update your imported rows in their source. Invent the way to mark them as imported ones, e.g. assign a special value to a certain column.
  • Use the SQL Where feature to define a condition that will filter out the rows marked by Triggers.

Look at the following example:

Assume that the table ADDRESS where you need to import from has the string column REMARK which you can modify without negative consequences. Let's use Triggers to have this column filled with the value 'IMPORTED' for each successfully imported row. Then let's use an SQL Where statement to ensure that only "fresh" rows are imported.

  1. After you have checked the box next to the table ADDRESS, press the button Advanced.

  2. Switch to the tab Trigger Options of the appeared dialog.Check the option Update source row.Select the column REMARK in the field Source and type 'IMPORTED' in the field Value.

  3. Look at the automatically generated statement under the grid. Press the button Parse to make sure the statement is valid.

  4. Close the message box and press OK to save the trigger and return to the Import External Data Toolkit Wizard.Press the button SQL Where.

  5. Specify a SQL clause in the appeared dialog. Since you need to filter out the rows which have REMARK set to 'IMPORTED', you clause must be REMARK <> 'IMPORTED'. Please pay attention that 'IMPORTED' must be in quotes and WHERE must be omitted.

  6. Check yourself by pressing the button Parse.

  7. Close the message box and press OK to save the statement and return to the Import External Data Wizard.
  8. Proceed with the Wizard.

Note that later the Import External Data will offer you a choice to run the import immediately, save it as a job or save & schedule the job. If you choose one of the two latter, you will be able to use repeatedly what you have arranged. At that each time SQLyog will import only the rows that do not contain 'IMPORTED' in their REMARK column and then mark imported rows with 'IMPORTED'.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Action On Error | SQLyog MySQL GUI

﻿﻿ Migration Toolkit Action On Error | SQLyog MySQL GUI

Action On Error

At this page you can define what SQLyog should do if an error occurs during your import session.

The options are:

  • Abort on error. If you check this option, SQLyog will stop import in case of an error. All data already imported during the session will be kept in your MySQL DB.
  • Email Notifications. If you check this option, SQLyog will issue an e-mail message either only on error or every time this export job is executed. You should then specify the e-mail options at the next page.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Email Options | SQLyog MySQL GUI

﻿ Migration Toolkit Email Options | SQLyog MySQL GUI

Email Options

This page appears if at the previous one you have selected the option Email Notifications. Here you should specify all details for successful dispatch and delivery of emails:

  • In the section Sender Information - the name and email which will appear in the From field of the emails as well as the address that will be used if the recipient replies to the email (Reply Email);
  • In the section Recipient Information - the email of the primary recipient as well as emails for Cc and Bcc, if necessary;
  • In the section SMTP Server Information - the parameters of your SMTP server including login and password for authentication, if required by the server.

- Type the SMTP server address. You can enter the host name, including domain, or the TCP/IP address. Example: Gmail SMTP address is "smtp.gmail.com".

- Encryption: Select the type of Encryption - SSL/TLS mail encryption which is now supported for mail alerts.

- Port: This field signifies the TCP port on which host/ip address should connect in order to deliver the message. By default, this field is set to 25 (SMTP). However, some internal SMTP servers may be setup on non-standard ports which will require that this field be changed to match the listening port of the mail exchanger. For example Gmail listens to port 465 for SSL encryption and 587 for TLS encryption.

- Username and Password: When sending mail through an authenticated SMTP server, you can fill in the User and Password fields appropriately. If you are not using a secure SMTP server, an error 5xx unrecognized command may be returned from the server if you enter anything into one of these fields.

Press the button Test Settings... to send a test email message using the specified parameters.

Proceed to the next Wizard page and define a subject for emails sent by Import External Data.

Turn to the section Import Results Representation to look at an example of email messages reporting success or failure of an import session.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Migration Toolkit Job use choices | SQLyog MySQL GUI

﻿﻿ Migration Toolkit Job use choices | SQLyog MySQL GUI

Job use choices

After you have specified all settings and preferences for your import job at the previous tabs of the Import External Data Wizard, you should indicate what you would like to do with the job.

  • Check the option Run Immediately if you need your data migration task to be executed at once.

  • Check the option Saving Options if you need to use the task repeatedly.

  • Select Save Job File if in the future you suppose to run the task manually (for this select the option Edit a saved Session at the Wizard's first page or use the Job File as a command-line argument for SJA.exe). With this option, at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format.

  • Select Save & Schedule It using Windows Scheduler if in the future you need the task to be launched automatically according to a certain schedule. In this case at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format and the name for a MS Windows Schedule which will be automatically created for you by SQLyog as soon as the task is saved. The task properties window will appear and you will be able to schedule it as necessary.

The options Save Job File and Save & Schedule It using Windows Scheduler are especially useful when you need to arrange repeated incremental import of some data.

In the box at the bottom of the window, specify folder path where the SQLyog Log file must be saved.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Data Migration Results Representation | SQLyog MySQL GUI

﻿ Data Migration Results Representation | SQLyog MySQL GUI

Import External Data Results Representation

After your import session has finished, you can check if it was successful or not. First, you can look at the sja.log file which is located in the SQLyog root folder.

If your import session was successful, the log file will contain only the line which indicates the import job starting date and time. It can look like this:

If however an error occurred during the import session, the log file will also contain the error description:

Another way to get reports from the ODBC Import Toolkit is to state that you wish to receive them (or to be sent to another person in charge) via email. You can choose to get report emails either only if an error occurs or just for any import session.

An email reporting the successful completion of your import session will look similar to this one:

In case of an error the email will contain the error description, just like the log file does:

Note: This feature is available in SQLyog Enterprise and Ultimate.


Specify data to copy | SQLyog MySQL Manager

﻿ Specify data to copy | SQLyog MySQL Manager

SQLyog

Specifying a Query

The option to write a Query can be choosen only if the tables need to be re-structured or if only a few rows need to be imported that satisfy a certain condition. The example below illustrates how to use the option to 'specify a query' in order to import data from 'sakila' (used as the source database) to another database where we will re-organize information from different tables in 'sakila' to a target table with two columns consisting of :
1. An integer `customer` column where every customer is identified with the same id as the customer_id in sakila.customers table.
2. A string `label` column (char, varchar or TEXT) where the information is formatted like a label in printable format consisting of full name, address, state and country.

To obtain information from various tables in 'sakila' like customer, address, city and country the following query can be made use of.

SELECT `customer`.`customer_id`,
`customer`.`first_name`,
`customer`.`last_name`,
`address`.`address`,
`address`.`address2`,
`city`.`city`
FROM
`sakila`.`customer`
INNER JOIN `sakila`.`address`
ON (`customer`.`address_id` = `address`.`address_id`)
INNER JOIN `sakila`.`city`
ON (`address`.`city_id` = `city`.`city_id`)
INNER JOIN `sakila`.`country`
ON (`city`.`country_id` = `country`.`country_id`);

The output of the above query when executed in the source database "sakila" looks as follows:

Now we will use a variant of this query to import data from 'sakila' to a new table as described above. The table is assumed to be created in advance. With the necessary formatting added the above query will be rewritten to:

SELECT `customer`.`customer_id` AS customer,
CONCAT( `customer`.`first_name`, ' ',
`customer`.`last_name`,
'\r\n',
`address`.`address`,
'\r\n',
`address`.`address2`,
'\r\n',
`city`.`city`,
'\r\n\r\n',
`country`.`country`
) AS label
FROM
`sakila`.`customer`
INNER JOIN `sakila`.`address`
ON (`customer`.`address_id` = `address`.`address_id`)
INNER JOIN `sakila`.`city`
ON (`address`.`city_id` = `city`.`city_id`)
INNER JOIN `sakila`.`country`
ON (`city`.`country_id` = `country`.`country_id`);

The aliases 'customer' and 'label' also define the column names of the target table where the data are imported. So the table that was created in advance should use those column names. The screen shot below shows the page in the wizard where you can enter the query.

After the successful completion of the import process the table "result" looks as follows:

You can use any valid SQL construction (a WHERE-clause, a GROUP BY with aggregates etc) in the the query you specify. However the following two points need to be taken care of:

1) The SQL entered when selecting to 'specify a query' is executed on source database. So the 'SQL-dialect' used in the query should follow the rules of the source server (SQL Server, Oracle etc. syntax may differ from the MySQL syntax in some respects).
2) When using the option to 'specify a query' you can only import to a single table per job.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Job Manager | SQLyog MySQL Management Tool

﻿ Job Manager | SQLyog MySQL Management Tool

Scheduled Jobs

Using Powertools->Scheduled Jobs you can Execute, Edit, Delete jobs through SQLyog interface. To create a job i.e. Database Synchronization, Notification and scheduled backups, use their respective wizard.

The current jobs are listed. Select the Job from the list and click on the respective button to perform the operation.


Database Synchronization | SQLyog MySQL Management Tool

﻿ Database Synchronization | SQLyog MySQL Management Tool

Database Synchronization

SQLyog Job Agent (SJA) is a high-performance, multithreaded application to automate and schedule synchronization of Data between two MySQL hosts.

SJA can also be used as a command line tool that accepts a Job Definition file encoded in XML as one of the parameters. You can either create the Job Definition file manually or use one of the wizards included with SQLyog. If you use SQLyog to create your job files, you don't need to have any knowledge about XML or the Job Definition schema.

SJA does not require any installation at hosts running the MySQL server. You can use any host to run the SJA. For example - you can use SJA to keep your production database (probably hosted with an ISP) in complete sync with your test database located in your PC or LAN.

SJA uses an efficient algorithm to generate checksums to find out the changes. Therefore only those rows that have been inserted, updated or deleted since the last sync are transferred between the hosts.

On Windows, it is available with SQLyog. The Linux version of SJA is FREE and can be downloaded from Here

Note: This feature is available in SQLyog Enterprise and Ultimate.


Database Synchronization | SQLyog MySQL Manager

﻿ Database Synchronization | SQLyog MySQL Manager

Starting Database Synchronization

You can start Database Synchronization with SJA by using the Wizards available with SQLyog or running SJA from the command line. Linux users can only use the command prompt option.

Start up Database Synchronization Wizard found in the Powertools menu or use keyboard shortcut Ctrl+ALt+W. The first screen you will get is:

This page allows you start up a new synchronization session or to edit an existing synchronization session.

Note that it's not required to have SQLyog currently connected to any database to execute the operation. The session establishes all required connections during the operation execution.

Select Start a new…and click Next to start a new synchronization session.

In this page you need to provide details about your Source and Target databases. The source database is the one whose data you want to copy to the target database. The target database is the one whose data will be synced with the source database. For more information on how to connect to MySQL servers click here.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Database Synchronization Option | SQLyog MySQL Manager

﻿ Database Synchronization Option | SQLyog MySQL Manager

Synchronization Option

In One-way synchronization, no modification is done in the source database. The extra rows present in the target database are deleted if you keep the checkbox "Don't delete extra row(s) in Target database" unchecked.

Two-way synchronization allows you to transfer data from the source to the target and vice-versa. In case of conflicting Primary Keys, the data from the source overwrites the target data.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Database Syncronization Selecting Tables | SQLyog GUI for MySQL

﻿ Database Syncronization Selecting Tables | SQLyog GUI for MySQL

Selecting Tables

The "Synch all tables in The database" always synchs all the tables present in the database at any given time. If new tables are added to the database at a later point in time, then selecting this option enables you to synch those tables as well. The "Select all" option here is a GUI option that will check all the tables at the time of building the job. When using this option, tables added after building the job will not be synched should the job be run at a later time. Tables can be selected individually or multiple selection on the GRID are possible with Shift+Click. You can even change the order in which the tables will be synched by using "Move Up.." and "Move Down..." options.

Additionally, you can configure SJA to detect changes only for specific columns. SQLyog detects changes by computing checksums which are calculated on the server side. This checksums calculation will be done on all rows of the table. However you may select/deselect specific columns for the checksum calculation. This should be done only if you can ensure that the columns selected for the calculation will suffice to identify changes between source and target. In particular if you have large BLOBs/TEXTs in a table you may skip comparing those in order to speed up the process if other columns together identify rows uniquely. This improves the time taken to complete the sync process as it reduces the load on the server.

The columns that are selected for checksum comparison are only for detection of UPDATEs to be done. It does NOT mean that ONLY those columns are synced. Data Sync will always sync all columns. This option is a performance improvement option meant only to speed up the comparison process.

To select specific columns (for the checksum's calculations), check the corresponding table and select the columns that needs to be compared on the source and the target to determine the changes.

Clicking on the "SQL Where" button will open up another window where you can specify a valid SQL WHERE clause.

This is very helpful when you don't want to sync archived data.

Note that irrespective of the number of columns that are used to calculate the checksums, SQLyog's Data Sync synchs all columns of the table should the checksum on either side indicate different data for that row (unless a WHERE is used to specify a certain criteria). If a WHERE clause is specified then it syncs all columns of the table that satisfy the WHERE clause.

Using WHERE clause will not delete extra rows in the target.

The other options is:

Set FOREIGN_KEY_CHECKS=0 for Target: If this option is checked, SQLyog issues SET FOREIGN_KEY_CHECK=0 command before the sync on the target server. It allows you sync data without validating FOREIGN KEY integrity.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Database Synchronization Type | SQLyog MySQL Client

﻿ Database Synchronization Type | SQLyog MySQL Client

Synchronization Type

In Direct synchronization type, option will sync immediately as the sync tools finds differences in the table. Alternatively, you can generate SQL sync scirpt for later execution or both options can be selected if you want a log of what the 'direct sync' did on the database(s).

Error Handling and Email Notification: See Schedule Backup -> Error Handling

Note: This feature is available in SQLyog Enterprise and Ultimate.


Synchronize Database | SQLyog MySQL GUI

﻿ Synchronize Database | SQLyog MySQL GUI

Synchronize Database

Selecting Synchronize Now… in the dialog shown above will start the synchronizing process. SQLyog starts up SJA as a child process to sync the databases. The complete detail of the sync process is shown in the last step of the wizard.

  • Check the option Run Immediately if you need your synchronization task to be executed at once.

  • Check the option Saving Options if you need to use the task repeatedly.

  • Select Save Job File if in the future you suppose to run the task manually (for this select the option Edit a saved Synchronization Session at the Wizard's first page or use the Job File as a command line argument for SJA.exe). With this option, at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format.

  • Select Save & Schedule It using Windows Scheduler if in the future you need the task to be launched automatically according to a certain schedule. In this case at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format and the name for a MS Windows Schedule which will be automatically created for you by SQLyog as soon as the task is saved. The task properties window will appear and you will be able to schedule it as necessary.
  • In the box at the bottom of the window, specify folder path where the SQLyog Log file must be saved.

Here is the results page that will appear in the Wizard if you select the Run Immediately option.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Saving and Scheduling Synchronization Process | SQLyog MySQL Client

﻿ Saving and Scheduling Synchronization Process | SQLyog MySQL Client

Saving and Scheduling Synchronization Process

If you selected the option Save Configuration file at the previous wizard page, you will be provided with a page where you can specify the file name to save you sync session for future repeated use.

In Windows, SQLyog can use the Windows Task Scheduler to schedule sync process. If you want to schedule the sessions repeated launch, just click on the Back button and select the Save & Schedule It using Windows Scheduler option. Then press Next and you will get the page to enter file name to save your session and schedule name to setup the following session's timetable.

Clicking on Finish button starts up the Windows Task Scheduler dialog.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Data Sync Points To Remember | SQLyog MySQL Manager

﻿ Data Sync Points To Remember | SQLyog MySQL Manager

Points To Remember

SQLyog uses MySQL's concat_ws() function to generate checksums. This function is known to give different results across different versions of MySQL. SJA works best if both the Source and Target and running the same version of MySQL.

SQLyog checks for similarity in the structure and Primary Keys for both the tables. If they are not same SQLyog will skip the table during the sync process.

All information about the sync i.e. errors and information are stored in the log file sja.log found in the installation directory of SQLyog. It creates sjasession.xml that you can use it in your application.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Visual Data Compare | SQLyog MySQL GUI

﻿ Visual Data Compare | SQLyog MySQL GUI

Visual Data Compare

Visual Data Comparison is an interactive implementation of Data Synchronization. Internally the two use the same code, but Visual Data Comparision is intended to be run in attended mode where you will be able to compare data from source and target before taking action. The option is available from the 'powertools' menu.
Alternatively you can also choose to branch out to Visual Data Comparison from the Data Synchronization wizard.

After selecting the option this dialog will display

Select Start a new... and click Next to start a New Data Comparison.

Here you may specify connection parameters of the source and target database. Visual Data Comparison can also read parameters (connection, database, tables) from a jobfile generated by the Data Sync wizard. After filling in the above dialog, a new dialog will appear.

Here you can select which table(s) you would like to compare. If you would like to compare differences in all tables, you can click on 'Sync all tables in database'

The first table (or part of it, if it is a large table) to be considered will display. Now you may compare data on source and target for every row decide if it should be sync'ed or not and in what direction - or you may select to synchornize the complete table. Just proceed through all tables selected untill you are finished.

Hide similar rows: Will not display the rows present in source and traget.

Preview SQL Clicking on this will get a popup which will display the summary of the queries which will be executed in source and target.

Note: Visual data compare can compare only tables with primary keys.

Note: This feature is available in SQLyog Ultimate.


Table Schema Synchronization | SQLyog MySQL GUI

﻿ Table Schema Synchronization | SQLyog MySQL GUI

Schema Synchronization

SQLyog's Schema Synchronization Tool, is a visual comparison/synchronization tool designed for developers who work between different MySQL servers or need to keep databases between two MySQL servers in sync. This means reporting the differences between tables, indexes, columns and routines of two databases, and generating scripts to bring them in Sync.

Schema Synchronization Tool enables you to compare and work with different databases. Its color-coded side-by-side comparison makes it easy to pinpoint at a glance, similarities or differences between two databases. Schema Synchronization Tool supports column, index and routines comparison enabling you to quickly insert & drop columns, indexes and routines. If there are any differences in the schema of a column/index/routines, Schema Synchronization Tool generates the correct scripts to apply those changes.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Starting Structure Synchronization | SQLyog MySQL Client

﻿ Starting Structure Synchronization | SQLyog MySQL Client

Starting Schema Synchronization

Select Powertools -> Schema Synchronization Tool or use the keyboard shortcut Ctrl+Q to start the tool.

If you click on either of the database dropdown lists, SQLyog shows you a combined list of all of the databases available from multiple connections that you have made through SQLyog. Select the two databases that you want to compare from the combo boxes.

As seen in the top of the dialog box, the object's state, (whether it be altered, new, etc.), is signified by different colors. The colors and their meanings are as follows:

BLUE: There is a difference between at least one of the columns, indexes or routines between the two databases. In addition, the order of fields in indexes is considered when comparing index objects.
GREEN: The object is present in the database and needs to be created in the other database.
GREY: The object is not present in the database and needs to be dropped in the other database (comes as green in the alternate box).
BLACK: No difference was found between the two database objects

Hide and ignore object(s):

Use upto 3 of the 4 checkboxes to hide object matching any of the 4 criteria. What you select has effect on what is displayed in the tree views after clicking the 'Compare' button.

Note that objects that are hidden are also ignored when generating the sync script. This can give you a better overview and you may use the options to protect your data against unwanted changes. Examples:

1) Check 'Identical' object(s) that exists on both hosts. No action will ever be taken with those whether displayed or not. You can hide those to better be able to identify the changes that will take place.

2) Check 'To be dropped in target' will prevent anything being dropped by the sync script as the objects will be invisible to the code generating the sync script.

3) Check both 'To be dropped in target' and 'To be created in target' will ensure that only identically named objects that exist on both hosts will be synced (that is only ALTER statements will be generated - not CREATEs or DROPs.

Filter: Use filter to synchronize structures of only specific database objects. One can use MySQL wildcard characters like "%" and "_" for pattern matching. If you have got "%" or "_" as literal in Database Object name then escape it with backslash, example "\%" and "\_".

Also note option to compare 'All objects' or compare 'Only tables'. After clicking 'Compare' you can deselect individual objects. Next and click Compare once more (and those individually selected objects will not hide - but they will be ignored). Also, whatever you have selected you can toggle (reverse selection) and Select All/Deselect All.

Set FOREIGN_KEY_CHECKS=0 for Target: If this option is checked, SQLyog issues SET FOREIGN_KEY_CHECK=0 command before the sync on the target server. It allows you sync data without validating FOREIGN KEY integrity.

The size of the object area and the script area can be changed by moving the splitter between those with the mouse.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Synchronizing The Schema | SQLyog MySQL Client

﻿﻿ Synchronizing The Schema | SQLyog MySQL Client

Synchronizing The Schema

The generated script can either be executed directly or saved in a file for later execution.

Note: This feature is available in SQLyog Enterprise and Ultimate.


SQLyog Notification Services | SQLyog MySQL Management Tool

﻿ SQLyog Notification Services | SQLyog MySQL Management Tool

SQL Scheduler and Reporting Tool

SQLyog Job Agent allows you to generate, format and send personalized mails with results returned from a query. SJA allows you to schedule execution of query(s). The resultset(s) can be emailed to multiple recipients. You can also use this feature to execute maintenance queries.

Note: This feature is available in SQLyog Enterprise and Ultimate.


SQLyog Notification Getting Started | SQLyog MySQL GUI

﻿﻿ SQLyog Notification Getting Started | SQLyog MySQL GUI

Getting Started

Start SQL Scheduler and Reporting Tool found in Powertools Menu or use keyboard shortcut Ctrl+Alt+N. The first screen you will get is:

This page allows you start up a new Sql scheduling and reporting session or to edit an existing session.

Select "Start a new Session…" and click Next to start a new Sql scheduling and reporting session.

Note that it's not required to have SQLyog currently connected to any database to execute the operation. The session establishes all required connections during the operation execution.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Choosing What To Do | SQLyog MySQL Manager

﻿ Choosing What To Do | SQLyog MySQL Manager

Choosing What To Do

In this page you need to specify what you want to do with the query.

Check Send query Result to an Email Address, if you want to format and send result(s) returned from query(s) to email address(s). If you want include the query and any messages returned from server then check the corresponding options.

Check Execute Maintenance Query(s) if you just want to execute some maintenance like ANALYZE, REPAIR etc. at scheduled intervals. You can configure SQLyog to send a mail alert if an error occurs while executing a 'maintenance query'.

Apart from the above option there are other two options to handle errors. Check Exit Immediately to exit immediately on the first occurrence of an error. If you want to ignore the error and continue with the next query then select Continue with next query.

Click Next… to specify your MySQL Connection Details.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Specify MySQL Connection Details | SQLyog GUI for MySQL

﻿ Specify MySQL Connection Details | SQLyog GUI for MySQL

Specify MySQL Connection Details

In this page you need to provide details about your MySQL server. For more information on how to connect to MySQL servers click here.

Click Next to specify Email and Outgoing Server information.

Note: If you had selected Execute Maintenance Query(s) then you will be taken to the page where you have to specify the query(s).

Note: This feature is available in SQLyog Enterprise and Ultimate.


Specify SMTP Server Information | SQLyog MySQL Management Tool

﻿ Specify SMTP Server Information | SQLyog MySQL Management Tool

Specify SMTP Server Information

In this page you need to provide information about the email address(s) to whom you want to send the resultset(s). You can even CC: and BCC: the result(s) by providing the email addresses in the Cc: and Bcc: textbox.

Sender Information

From Name: Specifies the friendly name associated with your e-mail address. When you send messages, this name appears in the From box of your outgoing messages.

From Email: Specifies the e-mail address that people should use when sending e-mail to you at this account. The e-mail address must be in the format name@company—for example, someone@webyog.com.

Reply Email: Specifies that you want replies to your outgoing messages sent to a different e-mail address, which you can type here. For example, you might send messages through one e-mail account—RNS@webyog.com—and specify that you want replies sent to RNSmith@msn.com. If you do not select this option, replies to your e-mail messages are sent to the e-mail account from which you send them.

Recipient Information

To Email, Cc, Bcc: In the To Mail, Cc or Bcc boxes, type the e-mail name of each recipient, separating names with a comma or a semicolon (;).

SMTP Server Information

Host: Specifies your Simple Mail Transfer Protocol (SMTP) server for outgoing messages. You can get this information from your Internet service provider (ISP) or local area network (LAN) administrator.

Type the SMTP server address. You can enter the host name, including domain, or the TCP/IP address. Example: Gmail SMTP address is "smtp.gmail.com".

Encryption: Select the type of Encryption - SSL/TLS mail encryption which is now supported for mail alerts.

Port: Specifies the port number you connect to on your outgoing e-mail (SMTP) server. This port number is usually 25. If your SMTP server requires authorization to send email then you need to check SMTP Server requires authentication and provide the details. You can get this information from your Internet service provider (ISP) or local area network (LAN) administrator.

However, some internal SMTP servers may be setup on non-standard ports which will require that this field be changed to match the listening port of the mail exchanger. For example Gmail listens to port 465 for SSL encryption and 587 for TLS encryption.

Username and Password: When sending mail through an authenticated SMTP server, you can fill in the User and Password fields appropriately. If you are not using a secure SMTP server, an error 5xx unrecognized command may be returned from the server if you enter anything into one of these fields.

To test whether you have provided the details correctly or not, press Test Settings. SQLyog will send you a test mail and confirm the success.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Specify Subject | SQLyog MySQL Management Tool

﻿ Specify Subject | SQLyog MySQL Management Tool

Specify Subject

Specify a subject for the emails or select YYYY-MM-DD or YYYY-MM-DD HH:MM:SS to auto generate subject from current Date/Time value.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Specify Query | SQLyog MySQL Management Tool

﻿ Specify Query | SQLyog MySQL Management Tool

Specify Query

You can specify an external file or enter query(s) that you want to execute. You can separate multiple query(s) using (;).

Click Execute & Test to actually execute the statement(s) entered and also to check whether your queries are valid or not.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Executing Job | SQLyog MySQL Manager

﻿ Executing Job | SQLyog MySQL Manager

Executing Job

  • Selecting Run Immediately starts up SJA as a child process to execute the query(s) and send the resultset(s) over email, if requested. The complete detail of the process is shown in the last step of the wizard.

  • Check the option Saving Options if you need to use the job repeatedly.

  • Select Save Job File if in the future you suppose to run the job manually (for this select the option Edit a saved Session at the Wizard's first page or use the Job File as a command-line argument for SJA.exe). With this option, at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format.

  • Select Save & Schedule It using Windows Scheduler if in the future you need the job to be launched automatically according to a certain schedule. In this case at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format and the name for a MS Windows Schedule which will be automatically created for you by SQLyog as soon as the job is saved. The Properties window will appear and you will be able to schedule it as necessary.
  • In the box at the bottom of the window, specify folder path where the SQLyog Log file must be saved.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Finishing Up The Notification Wizard | SQLyog MySQL Manager

﻿ Finishing Up The Notification Wizard | SQLyog MySQL Manager

Finishing Up The SQL Scheduler and Reporting Tool

Here is what you will see after you have set up your reporting service and selected the Run Immediately option.

If you selected the option Save Configuration File at the previous wizard page, you will be provided with a page where you can specify the file name to save your reporting session for future repeated use.

In Windows, SQLyog can use the Windows Task Scheduler to schedule the reporting process. If you want to schedule the session's repeated launch, just click on the Back button and select the Save & Schedule It using Windows Scheduler option. Then press Next and you will get the page to enter file name to save your session and schedule name to setup the following session's timetable.

Clicking on Finish button starts up the Windows Task Scheduler dialog.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Scheduled Backups | SQLyog MySQL GUI

﻿ Scheduled Backups | SQLyog MySQL GUI

Scheduled Backups

This option is available from Powertools -> Scheduled Backups...

SQLyog's Scheduled Backup Wizard allows you to schedule Exporting of Data as SQL Dumps. You can use this wizard to export data into a single file or as multiple files.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Starting Scheduled Database Backups | SQLyog MySQL GUI

﻿ Starting Scheduled Database Backups | SQLyog MySQL GUI

Starting Scheduled Database Backups

Start up Scheduled Backup Wizard found in the Powertools menu or use keyboard shortcut Ctrl+Alt+S to start the tool. The first screen you will get is:

This page allows you start up a backup session or to edit an existing session.

Select Start a new Session and click Next to start a new backup session.

In this page you need to provide details about your MySQL database. For more information on how to connect to MySQL servers click here.

There are also are two different options to backup ALL databases (but it will of course only backup the databases that this user can access on the server). One of those options include the `mysql` database and the other does not. You should be careful about backing up and restoring the `mysql` database unless you are the server administrator. For most users best option is to backup 'ALL user data' (without `mysql` database). Note that both ALL options will not backup the Information_Schema database. This database is a read-only database and cannot be restored. However ,if you want, you may select it individually for export.

Note that it's not required to have SQLyog currently connected to any database to execute the operation. The session establishes all required connections during the operation execution.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Selecting tables that you want to export | SQLyog MySQL GUI

﻿ Selecting tables that you want to export | SQLyog MySQL GUI

Selecting object(s) that you want to export

In this page, you choose whether you want to create backup of all the objects or selected object(s).

Select Export All Objects to export all the objects. If you want to export only selected object(s) then select Export Selected Object(s) and select the corresponding object(s) in the listbox.

Here in the dialog box, first select the object(s) like tables, views, stored procs, functions, triggers and events to be copied from the source database. You may Select All / Deselect All by clicking on tree node checkboxes to select the object(s) quickly.

Note: This feature is available in SQLyog Enterprise and Ultimate.


How do you want to generate the script | SQLyog MySQL Tool

﻿ How do you want to generate the script | SQLyog MySQL Tool

How do you want to generate the script

SQLyog allows you make a complete dump in one single dump file or across separate files in a directory. If you choose to export to separate files then SQLyog will generate obj_{objectname}.sql in the folder specified.

Select the option and provide the corresponding File name or Folder name accordingly.

You can even tell SQLyog to prefix the specified file name with the current timestamp and configure it to overwrite or append to existing script files.

Compress backup files: When this option is checked SQLyog will create a zip-archive of the backup.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Schedule Export Options | SQLyog MySQL Client

﻿ Schedule Export Options | SQLyog MySQL Client

Options

The next two pages of the wizard allow you to set various options for the backup process. SQLyog provides you with maximum flexibility and options to generate scripts as you want.

Structure and Data: Select this option if you want to backup both structure and data information for a table.

Structure Only: Select this option if you want to backup only structure information for a table.

DDL Options:

-- Include "CREATE database" statement: Select this option if you want to add "Create database" statement in the output.

-- Include "USE database" statement: Select this option if you want to add "Use database" statement in the output.

-- Include "DROP" statement: Select this option if you want to add "Drop Object(s)" statement in the output.

DML Options:

-- Generate Bulk INSERT statement: When this option is checked data from more rows will be written into a single INSERT statement. Each INSERT statement will be allowed to grow to the size specified in the 'Max. size of BULK INSERTS' setting.

-- Generate complete INSERT statement: Select this option if you want to backup data of a table as complete insert statements. Checking this option will generate SQL statements like: insert into tablename ( col1, col2, col3 ) values ( 1, 2, 3 ). Keeping the option unchecked will result in SQL statement being generated as: insert into tablename values ( 1, 2, 3 ).

-- Generate INSERT DELAYED statement: Select this option if you want to generate INSERT DELAYED statements. For more information on INSERT DELAYED, please visit the MySQL online documentation page.

Note that to ensure the integrity of your final export result; most of the options in this section are disabled if at least one of the DB's tables was not selected for export at the previous stages of the process. For more info Backup Database as SQL Dump.

This window allows you to set various other options while exporting data.

FLUSH Options:

  • Flush Logs before dump: Using this option will ensure that all data changes pending will been written to disk before the backup starts.

  • Flush master log and Flush slave logs: Leave them unchecked if the server is not a replicating master or slave. An attempt to FLUSH either if it does not exists will return an error and will/may abort the job

Options having effect on source:

  • LOCK All Tables for read: The LOCK will be generated for one table (the one for which INSERT statements is currently generated) at a time.

  • Single Transaction: Option (similar to 'mysqldump' "-–single-transaction") has only effect with Transactional storage engines (like InnoDB). All tables will be backed up from their state at the time the backup started. This option will ensure consistency across tables with Foreing Key CONSTRAINTs. The Single transaction option and the LOCK ALL Tables option are mutually exclusive.

Options written to file:

  • Set FOREIGN_KEY_CHECKS=0: This option should always be checked if tables with Foreign Keys are backed up as there is no way to ensure that a 'parent' table is written to the file before a 'child table'. If they are written in opposite order restore will fail if the option is not selected.

  • Add Lock around INSERT statement(s): This will ensure that no other clients have WRITE access to tables during restore as long as they are not fully restored.

  • Add DISABLE/ENABLE keys around INSERT statement(s): If this option is checked the server will not maintain indexes during the restore process (while executing INSERT statements) but generate indexes for each table when the restore of the table is complete. This may result in performance improvements during restore.

  • Max. size (in KB) for BULK INSERT statement(s): Here user may specify how large BULK INSERTS are allowed to be. Note: Any specification larger than 16MB will 'rounded down' to 16 MB. The size should be specified not larger than the max_allowed_packet setting on the server whre you want to restore the dump. If you try to execute BULK INSERT statement(s) larger than the server setting the server will disconnect the client and you will get the error 'The MySQL Server has gone away'.

  • Chunk size (in rows) during batch exports: The Chunk setting specifies how many rows will be fetched for every SELECT statement sent when retrieving data for generation of SELECT statements. Default is 1000. With very 'wide' and tables with large BLOB/TEXT columns you may get better performance with a lower setting - in particular when HTTP tunneling to a shared MySQL server where there may be a restriction on the memory a user is allowed to use.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Error Handling | SQLyog MySQL GUI

﻿ Error Handling | SQLyog MySQL GUI

Error Handling

This window allows you configure SQLyog about how to handle situations when an error occurs.

Abort on error: If you select this option then SQLyog will stop the export process as soon as it faces an error.

Email notifications: SQLyog's Scheduled Backup has an option where it can send you report of the export process over mail. You can configure SQLyog to send you the report only if an error occurs or every time the process executes.

To setup SQLyog to send notifications over email, just select the option Email Notifications and press Next. In the next window as shown below, provide your SMTP server details to send you email. More information about how to provide your SMTP server details can be found here.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Schedule Export Executing Job | SQLyog GUI for MySQL

﻿ Schedule Export Executing Job | SQLyog GUI for MySQL

Executing Job

  • Selecting Run immediately starts up SJA as a child process to execute the query(s) and send the resultset(s) over email, if requested. The complete detail of the process is shown in the last step of the wizard.

  • Check the option Saving Options if you need to use the job repeatedly.

  •
    • Select Save Job File if in the future you suppose to run the job manually (for this select the option Edit a saved Session at the Wizard's first page or use the Job File as a command-line argument for SJA.exe). With this option, at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format.

    • Select Save & Schedule It using Windows Scheduler if in the future you need the job to be launched automatically according to a certain schedule. In this case at the following page of the Wizard you should indicate the name for the Job File which will be saved in the XML format and the name for a MS Windows Schedule which will be automatically created for you by SQLyog as soon as the job is saved. The Properties window will appear and you will be able to schedule it as necessary.
  • In the box at the bottom of the window, specify folder path where the SQLyog Log file must be saved.

Note: This feature is available in SQLyog Enterprise and Ultimate.


Finishing Up The Notification Wizard | SQLyog MySQL GUI

﻿ Finishing Up The Notification Wizard | SQLyog MySQL GUI

Finishing Up The Scheduled Export Wizard

Selecting Run immediately commands SQLyog to launch the export session and show you the Wizard's log page where you can monitor the process.

Selecting Save Configuration file brings up the below dialog. Specify the file name and press Finish; SQLyog will then save your session.

Selecting Save & Schedule It using Windows Scheduler you will get the below dialog. You need to save the session details in a XML file before you can schedule it. Clicking on Finish button starts up the Windows Task Scheduler dialog.

Note: This feature is available in SQLyog Enterprise and Ultimate.


SQLyog Job from command line | SQLyog MySQL GUI

﻿ SQLyog Job from command line | SQLyog MySQL GUI

SQLyog Job Agent from command line

SQLyog Job Agent (SJA) is a high-performance, multithreaded, multi-platform application that lets you run maintenance scripts with your MySQL databases, have e-mailed formatted resultsets of a query, import data and metadata from ODBC-sources, synchronize MySQL databases and tables and do high-performance scheduled backups. On Windows, it is included with SQLyog Enterprise and SQLyog Ultimate. SJA for Linux is free for commercial and personal use.

SJA is a command line tool that accepts a Job Definition file encoded in XML as one of the parameters. You can either create the Job Definition file manually or use one of the wizards included with SQLyog. If you use SQLyog to create your job files, you don't need to have any knowledge about XML or the Job Definition schema. The Windows version also can be run from inside the SQLyog GUI, making its command line nature transparent to users if you want so.

On Windows platforms, SQLyog uses the Task Scheduler services to schedule your jobs. On Linux, you can use cron to schedule jobs. SJA can also be invoked by an application, no matter if it is a web page script (PHP, JSP, ASP) or a compiled binary.

SJA does not require any installation at hosts running the MySQL server. You can use any host to run the SJA. Technically SJA is a MySQL client that connects to any MySQL server in the world that allows for connections from a remote client. The client code that is used is the standard MySQL C-API compiled into the SJA executable. The Windows version of SJA further has the same advanced connectivity options as SQLyog Professional and higher: HTTP(S)-tunneling, SSH-tunneling and proxy authentication.

Note: This feature is available in SQLyog Enterprise and Ultimate.


SQLyog Job Agent from command line | SQLyog MySQL GUI

﻿ SQLyog Job Agent from command line | SQLyog MySQL GUI

SJA Parameters for command line

There are four job types available with the SJA:

1) SQL Scheduler and Reporting Tool.
2) SQLyog External Data Import Tool (NOTE: NOT available with the Linux SJA version)
3) MySQL data synchronization.
4) SQLyog Backup Tool. (For 'Scheduled Backups')

The command line syntax is:

sja "jobfile.xml" < parameters >

Parameters

-s | session file
-l | log file
-v/--version | version (supported from SJA version 8.13)
-r | chunk size (only in data sync)

For specifying the session file and the log file, a complete file path can be specified (using the quotes is necessary if there are spaces or a ':' in the path). If not specified default values logfile.txt and session.xml are used and file are placed in the directory from where SJA runs. Data sync jobs support an '-r' parameter to define CHUNK size (for a (source) HTTP connection it is 1000 rows by default if -r option is not specified explicitly). It has only an effect when a non-empty source-table is synced to an empty target-table.

Ex. -r2000 will copy CHUNKS of 2000 rows from source.

If no -r parameter is specified SQLyog will fetch "all rows" from source server in one 'SELECT' query operation. Also if the CHUNK size is greater than target 'max_allowed_packet', this 'max_allowed_packet' will still be respected.

Note that the -r parameter is a command line option only that is not supported from the GUI wizard.

The jobfile will often be a file with an .xml extension (and the full file name must be written), but can have any extension.

To execute more SJA jobfiles and to execute SJA with other executables and system commands you can use the batch-processing facility of the OS (a .bat -file on Windows) or a script/an application.

Note: This feature is available in SQLyog Enterprise and Ultimate.


The SJA XML Schema | SQLyog GUI for MySQL

﻿ The SJA XML Schema | SQLyog GUI for MySQL

The SJA XML Schema

The SJA job file is a pure text file in a standard XML format. It specifies what the SJA must do. Everything is included between the < job > and < /job > tags, that starts and concludes a SJA jobfile. Each of the four above-mentioned job types are identified by the tags < notifyjob >, < odbcimport >, < syncjob > and < exportjob >. Thus a job file for each of the four job types then looks like

SQL Scheduler and Reporting Tool | Import External Data Tool | Data Synchronization | Backup
< job version="4.1" > | < job version="4.1" > | < job version="4.1" > | < job version="4.1" >
< notifyjob > | < odbcimport > | < syncjob > | < exportjob >
... | ... | ... | ...
< notifyjob > | < odbcimport > | < syncjob > | < exportjob >
< /job > | < /job > | < /job > | < /job >

Note: This feature is available in SQLyog Enterprise and Ultimate.


User Management | SQLyog MySQL Manager

﻿ User Management | SQLyog MySQL Manager

User Management

SQLyog provides a powerful tool for adding, editing, deleting users and managing privileges on the selected databases, tables and other database objects. Note that everything managed here is stored on the server. SQLyog does not (and a client should not) verify user's details and privileges. The MySQL server does this. Every time a connection is established the server verifies that the user details are valid and every time a user executes a query the server will check that the user has sufficient privilege to execute that statement. Accordingly users already created during installation of the server or users created with other clients can be used by SQLyog and what SQLyog creates is available for other clients as well.


Add Users | SQLyog MySQL Management Tool

﻿ Add Users | SQLyog MySQL Management Tool

Create User

The user management is organized as a dialog with two areas:

1) In the area to the left, all databases and other objects are displayed in an expandable tree view.
2) The content of the area to the right will change dynamically depending on what object is selected in the left area.

A MySQL user is defined by the username and the host ('computer') from where this user may connect. The username can be up to 16 characters long. The host specifier can be an ip-address or any kind of hostname and alias that can be resolved by looking up the hostname on a server on either the local network or the Internet. Note that the two users 'me'@'onehost' and 'me'@'anotherhost' are two completely different users in MySQL. Wildcards can be used. For instance the wildcard '%' means 'any host'. So if user is defined as 'me'@'%' there are no restrictions from where this user is allowed to connect.

After defining the username and specifying the host you can (and it is recommended) specify a password for the user. The password must be retyped correctly.

Additionally the MySQL server has an option to specify per-user limitations as you see in the dialog.

To add a new user, open User Manager and click on Add New User button. Provide the username, hostname and password and select the limitations that you want to give to the user.
Finally click 'Create' and the user will be created.


Edit Users | SQLyog MySQL Management Tool

﻿ Edit Users | SQLyog MySQL Management Tool

Edit Users

To edit the username, password and the limitations of any user, select the user from the User drop down, select the root node from the left pane, edit and save changes.

Delete User:

To delete a user select an existing user in the drop-down in upper leftmost corner of the user management dialog. Next click Delete user. You will be prompted once for confirmation and the user will next be deleted.


Manage Privileges | SQLyog MySQL Manager

﻿ Manage Privileges | SQLyog MySQL Manager

Manage Privileges

Creating a user does not create any privileges for the user. The user will be able to connect to the server, but almost only that. He cannot read data from or write to the database and hardly see any details at all. To empower the user privileges must be assigned to him.

The MySQL server handles privileges of a user on both the global level and almost any object level. Some privileges can be assigned on more levels optionally - other privileges are only possible on the global or a specific object-level (and some details in this respect also depend on the server version). SQLyog user mangement is context aware. SQLyog will list the possible privileges in the right area of the User Management dialog depending on server version and what object is currently selected in the left area. You will see the content on the right area change if you select the global level, a database, a table or a stored routine.

Once you have decided on what level the user should have specific privileges, select that level in the left area of the Usermanagment dialog and check the privileges that user should have on this level. Next click 'Save Changes'.

One important detail with MySQL user management is that it is possible to define redundant privileges. For instance it is possible to define database-level or table-level SELECT privilege to a user that already has SELECT privilege on the global level (and in that case all SELECT privileges that are not global are redundant). But privileges on each level are recorded and stored independently by the server and - what is particularly important - in the described situation revoking ('removing') the global SELECT privilege from the user does not automatically remove SELECT privilege on lower levels if such exist. So the user will still be able to SELECT from the database(s) or table(s) where he has object-level SELECT privilege. This has fooled quite a lot of people over time, some people's data have been compromised and you should be aware of that. But this is how the server-side implementation is with MySQL.

Global Privileges:

In order to assign Global Privileges to any user, select an existing user in the User drop-down, select the Global Privileges from the left pane. Check/Uncheck the required privileges and click on ‘Save Changes※.

Object Privileges:

In order to give object level privileges, select an existing user in the User drop-down, choose the object to which you want to grant/revoke privileges. Check/Uncheck the required privileges and click on ‘Save Changes※.

NOTE: To view objects on which the user has privileges, check Show only privileged objects at the bottom left corner.


MySQL Environment Variables | SQLyog GUI for MySQL

﻿ MySQL Environment Variables | SQLyog GUI for MySQL

Environment Variables

Variables

Select Tools -> Show -> Variables.

To Show global variables and their current values.

Processes

Show all current running processes and their current status. You can use this option to kill a MySQL process.

Select Tools -> Show -> Processes.

Display current process list: The currently running process and their status is listed in the window

Killing any currently running process: To kill any process, select the process and click Kill Process button. The process will be killed and will be removed from the list of running processes

Status

To Show status & respective status value of the active server for information

Select Tools -> Show -> Status.


Flush | SQLyog MySQL Tool

﻿ Flush | SQLyog MySQL Tool

Flush

Use Tools -> Flush... (Ctrl+Shift+F) option if you want to clear some of the internal caches MySQL uses. To execute FLUSH statements, you must have the RELOAD privilege.

The following table illustrates the use of FLUSH:

LOGS | Closes and reopens all log files. If you have specified the update log file or a binary log file without an extension, the extension number of the log file will be incremented by one relative to the previous file. If you have used an extension in the file name, MySQL will close and reopen the update log file.
HOSTS | Empties the host cache tables. You should flush the host tables if some of your hosts change IP number or if you get the error message 'Host ... is blocked'. When more than max_connect_errors errors occur in a row for a given host while connection to the MySQL server, MySQL assumes something is wrong and blocks the host from further connection requests. Flushing the host tables allows the host to attempt to connect again.
PRIVILEGES | Reloads the privileges from the grant tables in the MySQL database.
STATUS | Resets most status variables to zero. This is something one should only use when debugging a query.
TABLES | Closes all open tables and force all tables in use to be closed.
TABLES WITH READ | Closes all open tables and locks all tables for all databases with a read until one executes UNLOCK TABLES. This is very convenient way to get backups if you have a file system, like Veritas, that can take snapshots in time.
DES_KEY_FILE | Reloads the DES keys from the file that was specified with the --des-key-file option at server startup time.
QUERY CACHE | Defragments the query cache to better utilize its memory. This statement does not remove any queries from the cache, unlike RESET QUERY CACHE.
USER_RESOURCES | Resets all per-hour user resources to zero. This enables clients that have reached their hourly connection, query, or update limits to resume activity immediately. It does not apply to the limit on maximum simultaneous connections.


Table Diagnostics | SQLyog MySQL Client

﻿ Table Diagnostics | SQLyog MySQL Client

Table Diagnostics

Use Tools -> Table Diagnostics (Ctrl+Alt+T) to perform various Table Diagnostics operations.

Analyze

The Analyze Tables Wizard allows you to analyze and store the key distribution for the table. During the analysis the table is locked with a read lock. Currently MySQL supports analyzing only for MyISAM tables and transaction-safe type tables. MySQL uses the stored key distribution to decide in which order tables should be joined when one does a join on something other than a constant.

Check

The Check Tables Wizard allows you to check the database tables on errors. Options that you can use with CHECK operation.

Quick: Don't scan the rows to check for wrong links.

Fast: Only check tables which haven't been closed properly.

Changed: Only check tables which have been changed since last check or haven't been closed properly.

Medium: Scan rows to verify that deleted links are ok. This also calculates a key checksum for the rows and verifies this with a calculated checksum for the keys.

Extended: Do a full key lookup for all keys for each row. This ensures that the table is 100 % consistent, but will take a long time!

Repair

The Repair Option allows you to repair the database tables that may be corrupted. Options that you can use with REPAIR option.

Quick: Do a repair of only the index tree.

Extended: Create the index row by row instead of creating one index at a time with sorting. This may be better than sorting on fixed-length keys if you have long char() keys that compress very good.

Optimize

The Optimize option should be used if you have deleted a large part of a table or if you have made many changes to a table with variable-length rows (tables that have VARCHAR, BLOB, or TEXT columns). Deleted records are maintained in a linked list and subsequent INSERT operations reuse old record positions. You can use optimization to reclaim the unused space and to defragment the data file.


Preferences | SQLyog GUI for MySQL

﻿ Preferences | SQLyog GUI for MySQL

Preferences

You can set preferences for SQLyog environment using Tools -> Preferences. Five tabs are available in the dialog:

  • Tab General - Here you can specify a number of settings to customize displaying, editing and SQL statement processing features in SQLyog.

  • Generate queries using backquote s: Checking this option will enclose table and column names in backquotes like `table`.`column` when SQLyog generates queries. This option has effect for the Query Builder and for 'Paste SQL Statements' (in the table menu).

    Keep focus on SQL Editor after query executio n: Checking this option tells SQLyog to remain focused on the query text after the query execution; otherwise the focus will be automatically switched to the Result Tab to show you the results of the query execution.

    Prompt if a tab with unsaved changes is close d: With this option on, SQLyog will warn you if you are trying to close an Editor/Query Builder/Schema Designer tabs without saving latest changes.

    Paste object name in editor on double-clic k: Use this option to have an object's name automatically typed in the SQL window when you double-click the object in the Object Browser. This will allow you to avoid misprints.

    Enable Word Wrap in SQL editor and BLOB view er: Text data will be word wrapped in SQL Editor and BLOB viewer in Data Tab and Result Window.

    Enable transaction support for batch process: If you check this option, all DML statements will be wrapped in a transaction.
    For Example,
    SET AUTOCOMMIT = 0;
    DML-statement (INSERT, UPDATE or DELETE)
    DML-statement
    ..
    COMMIT

    On transactional engines(InnoDB, PBXT), this will ensure that the DML-statements(between SET and COMMIT) are 'atomic'. ie. it gets done completely or it does not get done at all. Inside transactions DML is not written to the database but to a log. Only on COMMIT the log will be applied to the database.

    Note that, this option works only with * GUI functionalities*: 'Copy Database', 'Database Synchronization', 'Import External Data'. This doesn't apply to the DML statements written in a Query Editor. But you may course handle a transaction yourself from the editor.
    Also when executing a SQL-script from an external file (menu .. tools .. Execute SQL script) the script will be sent to the server as it is. So the script may use transactions or not. SQLyog does not change the statements contained in the script.
    Note that DDL statements generally cause an implicit COMMIT in MySQL. Also if the global server setting is AUTOCOMMIT = 0 (what is very rare with MySQL) user will have to COMMIT manually after DML statements.

    Force disable FK check throughout HTTP import batch process: Selecting this option, it will have same effect when importing external files with SQLyog (from Tools ... Restore from SQL dump) over an HTTP-connection. It is selected as default.

    Show Warning(s) in Message tab: Selecting this option displays warnings automatically after execution in MESSAGES tab. Note: this is not implemented for HTTP-tunneling.

    Export option:

    -- Max. size (in KB) for BULK INSERT statement(s): The DUMP (SQL-file) will contain INSERT statements with the (textual) length as you specify here. The option to 'get server default' will use the 'max_allowed-packet' setting for the actual server.

    -- Chunk size (in rows) during batch exports: When this option is selected SQLyog will not retrieve all data from the server in one query but will instead send a series of queries and for each get the number of rows you specify. This can be required to avoid various types of timeouts (for instance the default MySQL configuration is to allow only for 60 seconds to send result. If it takes longer than this server configuration setting the server will drop the connection). Note that with HTTP tunnel a CHUNK setting of 1000 rows will always be used unless you specify a lower value.

    Table Data/Info/History Tab positioning er: This is an option to change the position of Table Data/Info/History Tab to either the Upper pane or Lower pane.

  • Tab Power Tools - This tab is for configuring and enabling/disabling the Autocomplete feature.

  • Tags Directory - The option to specify (storage position for Autocomplete files is primarily intended for use on networks where 'roaming profiles' are stored on a domain server. Specifying a local folder will reduce network traffic and save storage on the server.

    Query Profiler - With this feature enabled every SELECT statement will trigger execution of EXPLAIN (EXTENDED) and SHOW PROFILE (if supported by server) for the query and will detect changed SESSION STATUS VARIABLES due to execution of the query. The information will display in an 'Profiler' tab opening in the DATA/RESULT area.

  • Font & Editor Settings - Here you can setup fonts and colors of your SQLyog environment for your absolute convenience.

  • Section Fon ts: Clicking on the corresponding button will load up a Font selector dialog box where you can select font accordingly.

    Section Colo r: Select any feature in the list and click on the buttons to change the foreground/background color. The preview box will show the current selection.

    Section Case: Clicking on the corresponding dropdowns of 'keywords' and 'functions' affects only in the display in editor. The settings here have effect both for the display in editor as well as when copying or saving from the editor.

    The TAB size setting configures how wide (in characters) a TAB entered in the SQL in the editor shall be displayed.

    -- Insert spaces: When selected, it insert space characters rather than TAB characters. If tab size is set to 5, for example, then five spaces are inserted in the current line of text if you press the TAB key.

    -- Keep tabs: When selected, it insert TAB character rather than spaces when possible.

  • Tab SQL Formatter - Here you can specify a number of settings to customize formatting and displaying query in SQLyog.

  • Table and Column list style - Selecting 'Not stacked' or 'Stacked' can be used to insert line breaks in editor such as before or after commas, SQL keywords, Aliases etc.

  • Tab Others - Here you can specify a number of settings to customize displaying and editing data in SQLyog.

  • Retain user modified column width: Checking this option, you have defined a column width for a combination of database/table/column the defined column width will always be used. Note that connection details are not used for identifying columns with this new functionality so with replicated and identically named synchronized databases it is sufficient to define in one place. Alias'ed columns in results are handled by the column name and not the alias. Non-column results (like constants, results of expressions/functions, returns of SHOW etc.) are not supported currently. The feature can be turned on/off. Note that if both this new option and the old "Truncate column headers to maximum data size" is checked the "Truncate..." option will be ?‘overriden' by the new column width persistence feature.

    Truncate Column Headers To Maximum Data Siz e: Checking this option will result in column widths of max. data size in Result Window and Data Tab. If you have this option unchecked, SQLyog uses an intelligent calculation to set the width to either column name or data size.

Output when Truncate Column Headers To Maximum Data Size is kept unchecked

Output when Truncate Column Headers To Maximum Data Size is kept checked

Automatically refresh Table Data tab on focu s: Checking this option makes SQLyog automatically refresh Table Data tab when it is focussed.

Prompt if multiple rows are getting upda ted in the Data display/editing sectio n: If editing data results in multiple rows getting updated then SQLyog will warn you and ask for confirmation. If you don't want the warning, then you need to uncheck this option.

Enable Autopaging in Data/Result tab: By checking this option you can define if you want the result set of a SELECT query displayed in pages RESULT tab and the default number of rows that is displayed. If the option to 'Remember setting for each query' is checked the latest number of rows fetched will be stored and used whenever a SELECT query fetches data from that database and table (in current session or next session). Note that the number of rows (only) is stored and persistent - the 'offset' value is not. Also note that the query string itself, the database context and the table - but not the connection details - defines this setting uniquely for each query.

Theme: This is an option to change the look of SQLyog. All you have to do is pick one from a dropdown list.


Specifying SQLyog's data folder | SQLyog MySQL GUI

﻿ Specifying SQLyog's data folder | SQLyog MySQL GUI

Specifying SQLyog's Data Folder

This is optional and intended for special use cases - and if not specified files will be stored in users 'user profile'.

SQLyog supports a -dir parameter. The -dir parameter tells where SQLyog will look for and create files that are not read-only. This option can be used to specify the path where SQLyog will create these files. You simply need to specify the filepath (addressed absolutely or relatively to the SQLyog executable) after the -dir parameter. Like-

SQLyog -dir "path"

To specify the path where SQLyog writable files are stored.

In the particular case where you run SQLyog from a removable drive you will probably not be able to to know in advance the drive-letter of the removable drive. So here you should use relative file paths. If there is \SQLyog folder on the removeble drive and a \SQLyog\Files folder where the files should be, the command to start SQLyog would be simply-

SQLyog -dir "Files" (using relative addressing and assumed that you already cd'ed to the installation folder)

If you don't want to use command syntax but start SQLyog from a program icon then after normal installation (using the installer) you may copy and right-click a program icon/shortcut (on desktop or in start menu) and edit the command from the 'properties' menu.

The -dir switch can also be used if you want to save all SQLyog-related files to an encrypted driver or folder - or if you for any reason want another file position than the default.


Keyboard Shortcuts | SQLyog MySQL Manager

﻿ Keyboard Shortcuts | SQLyog MySQL Manager

Keyboard Shortcuts

The below are shortcut keys that will work with SQLYog. It is highly recommended that all users keep a good reference of the below short cut keys and/or try to memorize the below keys. Doing so will dramatically increase your productivity.

Keyboard Shortcuts | Command
Connection
Ctrl+M | Create A New Connection
Ctrl+N | Create A New Connection With Current Connection Properties
Ctrl+F4/Ctrl+W | Disconnect The Current Connection
Ctrl+Tab | Switch to Next Connection
Ctrl+Shift+Tab | Switch to Previous Connection
Ctrl+1...8 | Select Connection (1 to 8)
Ctrl+9 | Select Last Connection
Object Browser
F5 | Refresh Object Browser (Default)
Ctrl+B | Set Focus On Object Browser
Ctrl+Shift+B | Object Browser Filter
SQL Window
Ctrl+T | New Query Editor
Ctrl+E | Set Focus On SQL Window
Ctrl+Y | Redo
Ctrl+Z | Undo
Ctrl+X | Cut
Ctrl+V | Paste
Ctrl+H | Replace
Ctrl+G | Go to
Ctrl+O | Open File In New Tab
Ctrl+Shift+O | Open File In Same Tab
Ctrl+Shift+U | Make Selection Uppercase
Ctrl+Shift+L | Make Selection Lowercase
Ctrl+Shift+C | Comment Selection In SQL Window
Ctrl+Shift+R | Remove Comment From Selection
Ctrl+Shift+T | Insert Templates
Ctrl+Enter | List All Tags
Ctrl+Space | List Matching Tags
Query Execution
F8 | Execute Current Query And Edit Result
F9 | Execute Current Query (Default)
Ctrl+F9 | Execute Selected Query(s) (Default)
SQL Formatter
F12 | Format Current Query
Ctrl+F12 | Format Selected Query
Shift+F12 | Format All Queries
Paste SQL Statements
Alt+Shift+I | Insert Statement
Alt+Shift+U | Update Statement
Alt+Shift+D | Delete Statement
Alt+Shift+S | Select Statement
Result
F11 | Insert Update Dialog
Ctrl+R | Set Focus To The Active Tab In Result Pane
Ctrl+L | Switch Result Window/Table Data Between Grid/Text Mode or Form View/text
Ctrl+Alt+L | Switch Result Window/Table Data Between Grid and Form View
Ctrl+Alt+C | Export Table Data As CSV, Excel, SQL etc...
Ctrl+Alt+E | Backup Data As SQL Dump
Ctrl+Shift+M | Import Data From CSV
Ctrl+Shift+E | Export Resultset
Alt+1...8 | Select Tab In Result Window (1 to 8)
Alt+9 | Select Last Tab in the Result Window
Show/Hide
Ctrl+Shift+1 | Show/Hide Object Browser
Ctrl+Shift+2 | Show/Hide Result Pane
Ctrl+Shift+3 | Show/Hide Query Window
Database/Table
Ctrl+D | Create Database
F6 | Alter Database/Table Structure/Index/View/Store Proc/Function/Trigger/Event
F2 | Rename Table/View/Trigger/Event
Shift+Del | Truncate Database/Table
F7 | Manage Index Window
F10 | Relationships/Foreign Keys
Ctrl+Alt+R | Reorder Column(s)
Alt+S | Save Table
Alt+R | Revert Changes Made To Table Schema
Ctrl+Alt+T | Table Diagnostics
Ctrl+Alt+F | Flush Dialog
Ctrl+Shift+Alt+S | Create Schema For Database In HTML
Ctrl+Shift+Q | Restore From SQL Dump
PowerTools
Ctrl+Alt+W | Database Synchronization Tool
Ctrl+Q | Schema Synchronization Tool
Ctrl+Alt+O | Migration Toolkit
Ctrl+Alt+N | SQL Scheduler and Reporting Tool
Ctrl+Alt+S | Scheduled Backup Wizard
Other Tabs
Ctrl+K | Query Builder
Ctrl+Alt+D | Schema Designer
Ctrl+Shift+D | Data Search
Ctrl+Shift+I | Info Tab
Ctrl+Shift+H | History Tab
User Manager
Ctrl+U | Add A New User
Ctrl+Alt+U | Edit User
Ctrl+Shift+W | Manage Privileges
Favorites
Ctrl+Shift+F | Add Current SQL To Favorites
Language
Alt+Shift+L | Change Language
Other
F1 | Help
Ctrl+C | Copy
Ctrl+A | Select All
Ctrl+F | Find (SQL Window/Result Window And Table Data In Text Mode/Blob Viewer)
F3 | Find Next (SQL Window/Result Window And Table Data In Text Mode)
Ctrl+S | Save
Ctrl+PgUp | Switch To Previous Tab
Ctrl+PgDown | Switch To Next Tab
DEL | Delete Selected
Alt+F5 | Refresh Table Data Tab
Alt+L | Close Tab
Alt+F4 | Exit


Using Help | SQLyog GUI for MySQL

﻿ Using Help | SQLyog GUI for MySQL

Using Help

SQLyog has complete context sensitive Help features. Just press F1 in any of the dialog box or Windows to load up the corresponding Help subject.


Result Window | SQLyog MySQL Client

﻿ Result Window | SQLyog MySQL Client

Result Window

This window shows Results of Query which you can edit in an easy to use Excel like grid interface.

It also shows you information about Databases and Tables and all the query(s) that has been executed in the current connection. The window has three permanent tabs - Data, Object and History and two context specific tabs - Result and Message.


Server Operation | SQLyog MySQL GUI

﻿ Server Operation | SQLyog MySQL GUI

Server Operations

SQLyog provides you with graphical interface for all native MySQL services, which are intended for database and table maintenance.