我可以為 SQL_SAFE_UPDATES 和 INNODB_FLUSH_LOG_AT_TRX_COMMIT 設置我的 InnoDB MySQL 伺服器會話狀態嗎?
我可以為
SQL_SAFE_UPDATES
和INNODB_FLUSH_LOG_AT_TRX_COMMIT
使用 MySQL Workbench 的 SQL Query 視窗或 MySQL Connection Navigator 而不是在 Ubuntu Linux 15.10 上的 ac# Mono、.NET 4.5 MySQLCommand 建構子中設置我的 InnoDB MySQL 伺服器會話狀態嗎?如果沒有,我可以設置我的 InnoDB MySQL 伺服器會話狀態
SQL_SAFE_UPDATES
並INNODB_FLUSH_LOG_AT_TRX_COMMIT
使用 MySQL 伺服器啟動腳本嗎?它位於 Ubuntu Linux 15.10 的什麼位置,我應該在 MySQL 伺服器啟動腳本中放入哪些 mysql 命令行參數?這是我希望在 SQL 查詢視窗中執行的 SQL 腳本:
-- Current Database: `scdvr` -- CREATE DATABASE IF NOT EXISTS `scdvr` USE `scdvr`; SET SQL_SAFE_UPDATES = 0; SET GLOBAL INNODB_FLUSH_LOG_AT_TRX_COMMIT = 2; -- -- Table structure for table `ActionSequence` -- DROP TABLE IF EXISTS `ActionSequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ActionSequence` ( `ASID` varchar(64) NOT NULL, `EAID` varchar(64) NOT NULL, `SequenceOrder` smallint(6) NOT NULL DEFAULT '0', `Enabled` tinyint(1) NOT NULL DEFAULT '1', `Toast` tinyint(1) NOT NULL DEFAULT '0', `SendToCentral` tinyint(1) NOT NULL DEFAULT '0', `LogAsEvent` tinyint(1) NOT NULL DEFAULT '0', `CameraGroupID` int(11) DEFAULT NULL, `AudioAlertFile` varchar(800) DEFAULT NULL, `EmailAddresses` varchar(1500) DEFAULT NULL, PRIMARY KEY (`ASID`), UNIQUE KEY `ASID` (`ASID`), UNIQUE KEY `EAID` (`EAID`), KEY `IX_ActionSequence_EAID` (`EAID`), KEY `FK_ActionSequence_CameraGroups` (`CameraGroupID`), CONSTRAINT `FK_ActionSequence_CameraGroups` FOREIGN KEY (`CameraGroupID`) REFERENCES `CameraGroups` (`CameraGroupID`) ON DELETE SET NULL ON UPDATE NO ACTION, CONSTRAINT `FK_ActionSequence_EventAction` FOREIGN KEY (`EAID`) REFERENCES `EventAction` (`EAID`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */;
你執行的是什麼版本? 5.6 doc給出了詳細資訊:
innodb_flush_log_at_trx_commit
可以設置 (1) 在命令行上,(2) inmy.cnf
或 (3) viaSET GLOBAL
。
sql_safe_updates
只能通過SET SESSION
或設置SET GLOBAL
。請注意,
SET GLOBAL
這不會影響目前連接的任何人(包括您自己)。它將影響稍後連接的任何人,但在下次關閉 mysqld 之前。
my.cnf
影響下次重新啟動後連接的使用者。您的問題詢問如何設置它們,但沒有說明最終目標是什麼,所以我不能推荐一種特定的方法。(你關心 Workbench 嗎?你的 C# 連接?其他目前連接?未來的連接?什麼?)
我不知道 Workbench 是否在動作之間重新連接。它可能會。這意味著
SET SESSION
可能不會有任何影響。更新(基於對問題的更新)
SET GLOBAL INNODB_FLUSH_LOG_AT_TRX_COMMIT = 2; Note: that SET will affect other users. Now disconnect and reconnect. SET SQL_SAFE_UPDATES = 0; and do the rest of your task.
但是……這些設置都不會影響
CREATE TABLE
. 我假設你會繼續做INSERTs
和UPDATEs
?旁注:這兩個索引是多餘的,應該刪除:
UNIQUE KEY `ASID` (`ASID`), KEY `IX_ActionSequence_EAID` (`EAID`),
一個
PRIMARY KEY
是一個UNIQUE KEY
是一個KEY
。為什麼兩者都有
ASID
和EAID
?兩者都是UNIQUE
;兩者都是VARCHAR(64)
;要麼是PRIMARY KEY
.