mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 20:50:20 +08:00
Revert r3976 (removal of SQL_MODE handling in export), and revert r3988. Use a IF(@OLD_XYZ IS NULL, 0, @OLD_XYZ) approach instead. This way we fix unwanted auto_increment values for "0", and foreign_key_checks are restored to its previous value instead of 0. Fixes issue #2870 and might also be related to issue #2619.
This commit is contained in:
@ -163,7 +163,8 @@ const
|
||||
DATA_INSERT = 'INSERT';
|
||||
DATA_INSERTNEW = 'INSERT IGNORE (do not update existing)';
|
||||
DATA_UPDATE = 'REPLACE existing data';
|
||||
EXPORT_FILE_FOOTER = '/*!40014 SET FOREIGN_KEY_CHECKS=1 */;'+CRLF+
|
||||
EXPORT_FILE_FOOTER = '/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '''') */;'+CRLF+
|
||||
'/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;'+CRLF+
|
||||
'/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;'+CRLF;
|
||||
|
||||
{$R *.DFM}
|
||||
@ -610,7 +611,8 @@ begin
|
||||
|
||||
if Assigned(ExportStream) then begin
|
||||
Output(EXPORT_FILE_FOOTER, False, True, False, False, False);
|
||||
Output('/*!40014 SET FOREIGN_KEY_CHECKS=1 */', True, False, False, True, True);
|
||||
Output('/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '''') */', True, False, False, True, True);
|
||||
Output('/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */', True, False, False, True, True);
|
||||
if comboExportOutputType.Text = OUTPUT_CLIPBOARD then
|
||||
StreamToClipboard(ExportStream, nil, false);
|
||||
FreeAndNil(ExportStream);
|
||||
@ -1163,9 +1165,11 @@ begin
|
||||
'-- --------------------------------------------------------' + CRLF + CRLF +
|
||||
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;' + CRLF +
|
||||
'/*!40101 SET NAMES '+DBObj.Connection.CharacterSet+' */;' + CRLF +
|
||||
'/*!40014 SET FOREIGN_KEY_CHECKS=0 */;';
|
||||
'/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;' + CRLF +
|
||||
'/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=''NO_AUTO_VALUE_ON_ZERO'' */;';
|
||||
Output(Header, False, DBObj.Database<>ExportLastDatabase, True, False, False);
|
||||
Output('/*!40014 SET FOREIGN_KEY_CHECKS=0 */', True, False, False, True, True);
|
||||
Output('/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */', True, False, False, True, True);
|
||||
Output('/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=''NO_AUTO_VALUE_ON_ZERO'' */', True, False, False, True, True);
|
||||
FHeaderCreated := True;
|
||||
end;
|
||||
|
||||
@ -1273,11 +1277,11 @@ begin
|
||||
if ToDb then
|
||||
Insert(Quoter.QuoteIdent(FinalDbName)+'.', Struc, Pos('TRIGGER', Struc) + 8 );
|
||||
if ToFile or ToClipboard or ToDir then begin
|
||||
Struc := 'SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=' + esc(StrucResult.Col('sql_mode')) + ';' + CRLF +
|
||||
Struc := 'SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE=' + esc(StrucResult.Col('sql_mode')) + ';' + CRLF +
|
||||
'DELIMITER ' + TempDelim + CRLF +
|
||||
Struc + TempDelim + CRLF +
|
||||
'DELIMITER ;' + CRLF +
|
||||
'SET SQL_MODE=@OLD_SQL_MODE';
|
||||
'SET SQL_MODE=@OLDTMP_SQL_MODE';
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Reference in New Issue
Block a user