将文本文本中的文本插入MySQL TEXT列

时间:2013-07-31 02:10:23

标签: php mysql

我正在尝试以下无法正常工作:

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中插入日志文件内容的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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