0

我正在尝试以下不起作用:

update table_name set text_column= load_file('C:\temp\texttoinset.txt') where primary_key=5;

这里的 text_column 是 TEXT 类型。

这给出了:

Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. Rows matched: 1  Changed: 0  Warnings: 1

从 PHP 在我的 SQL 中插入日志文件内容的正确方法是什么?

4

1 回答 1

0

这是这个问题的可能重复:https ://serverfault.com/questions/316691/mysql-binlog-format-dilemma

无论如何,关键是Statement 是不安全的,因为它使用的系统函数可能会在从站上返回不同的值。

当 MySQL 数据库设置为使用复制时,系统功能load_file可能会导致问题。主服务器和从服务器之间的文件C:\temp\texttoinset.txt可能不同(或者甚至可能不存在于其中一个服务器上)。

使用复制时,最好避免使用系统函数(如load_fileNOW()),因为在不同的服务器上执行时值会有所不同。如果要将文件加载到使用复制的 MySQL 数据库中,请考虑使用 PHP 的file_get_contents来读取文件,然后使用它将其插入到数据库中。

附带说明一下,我不知道您为什么要尝试将日志文件插入 MySQL,尤其是作为单个 TEXT 列。可能有更好的方法来做你想做的事情。

于 2013-07-31T02:23:02.727 回答