php - 将文本文件中的文本插入 MySQL TEXT 列

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

最佳答案

这可能是这个问题的重复: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 列。可能有更好的方法来完成您想做的事情。

关于php - 将文本文件中的文本插入 MySQL TEXT 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960462/

相关文章:

c# - Entity Framework 在 where 子句上添加了一个额外的条件

c# - UPDATE 查询未更新 Access 数据库中的记录

php - 尝试使用强制唯一标识符将记录添加到带有 MYSQL 和 php 的表中

php - 对mysql中的多个字段进行加权搜索的最佳方法?

php - 在 symfony 中获取容器

php - 如何使用 predis 多次发布

php - 如何在 else 函数中使用 if 函数

php - 根据所选行更新表单提交

php - 唯一数组值

MYSQL `SELECT` 多个表列包含 `JOIN` 和 `USING` 但不是 `*`