我正在尝试以下方法,但不起作用:
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 中插入日志文件内容的正确方法是什么?
最佳答案
这可能是这个问题的重复:https://serverfault.com/questions/316691/mysql-binlog-format-dilemma
无论如何,关键是语句不安全,因为它使用的系统函数可能会在从站上返回不同的值。
当 MySQL 数据库设置为使用复制时,load_file
等系统函数可能会导致问题。主服务器和从服务器之间的文件 C:\temp\texttoinset.txt
可能不同(或者甚至可能不存在于其中一台服务器上)。
使用复制时,最好避免使用系统函数(例如 load_file
和 NOW()
),因为在不同服务器上执行时,值会有所不同。如果要将文件加载到使用复制的 MySQL 数据库中,请考虑使用 PHP 的 file_get_contents读取文件,然后使用它将其插入数据库。
顺便说一句,我不知道你为什么要尝试将日志文件插入 MySQL,尤其是作为单个 TEXT 列。可能有更好的方法来完成您想做的事情。
关于php - 将文本文件中的文本插入 MySQL TEXT 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960462/