可以選擇但不能從 SQL Server 插入到 MySQL
我在將數據從 SQL Server 插入 MySQL 時遇到問題。我看到了幫助其他人的這種語法:
EXEC master.dbo.sp_addlinkedserver @server='MYSQL', @srvproduct='MySQL', @provider='MSDASQL', @provstr='DRIVER={MySQL ODBC 5.1 Driver};SERVER=HOST;Port=3306;USER=uid;PASSWORD=pw;OPTION=3;DATABASE=mydb;
但錯誤仍然是:
連結伺服器“MYSQL1”的 OLE DB 提供程序“MSDASQL”返回消息“
$$ MySQL $$$$ ODBC 5.1 Driver $$$$ mysqld-5.5.44-MariaDB-log $$無法執行語句:由於 BINLOG_FORMAT = STATEMENT 並且至少一個表使用僅限於基於行的日誌記錄的儲存引擎,因此無法寫入二進制日誌。當事務隔離級別為 READ COMMITTED 或 READ UNCOMMITTED 時,InnoDB 僅限於行日誌記錄。”。 消息 7343,第 16 層,狀態 2,第 1 行
連結伺服器“MYSQL1”的 OLE DB 提供程序“MSDASQL”無法 INSERT INTO 表“
$$ MSDASQL $$”。
它在這裡說
BINLOG_FORMAT
等於,STATEMENT
但是當我檢查它時,它設置為MIXED
。找到了解決方案,他們說
BINLOG_FORMAT
必須是ROW
,但是我對編輯有疑問或困難,my.cnf
因為我不知道如果我將 binlog 格式從混合更改為行會發生什麼。我該如何解決這個問題?
找到了解決方案,他們說
BINLOG_FORMAT
必須是“ROW”,但我對在 my.cnf 中編輯有疑問或困難,因為我不知道如果我將 binlog 格式從混合更改為會發生什麼排。試試吧。如果 MySQL 會吃掉你的數據,它不會關心那個選項——不管你的配置如何,它都會向前推進。
BINLOG_FORMAT
明確地說如果您使用 InnoDB 表並且事務隔離級別為
READ COMMITTED
orREAD UNCOMMITTED
,則只能使用基於行的日誌記錄。可以將日誌記錄格式更改為STATEMENT
,但在執行時這樣做會很快導致錯誤,因為 InnoDB 不能再執行插入。這意味著您有兩個選擇,要麼使用預設隔離級別,
REPEATABLE READ
要麼設置選項。