mysql报错:Error Code: 1175. You are using safe update mode and you tried to update a table without a

在MySQL的Safe Updates模式中,如果使用UPDATE语句而没有通过主键进行限制会报错。解决方法是添加主键条件到WHERE子句,或者临时关闭Safe Updates模式,通过`SET SQL_SAFE_UPDATES=0;`来执行更新操作。建议在修改模式后执行更新,并确保了解其潜在风险。

mysql在update更新的时候报如下错误:

> Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec

报错原因:现在是在mysql的safe-updates模式中,如果where后跟的条件不是主键,就会出现这种错误。

知道问题,解决方法就简单了,要么where后面加上主键的条件,

要么就更改模式:SET SQL_SAFE_UPDATES = 0;

建议改模式。

### 图神经网络中的节点更新 (Node Update) 模块 图神经网络(GNN)的核心在于通过消息传递机制来学习节点特征表示。其中,**节点更新模块**负责聚合邻居节点的信息并将其与当前节点自身的特征相结合,从而生成新的节点嵌入。 #### 节点更新的基本流程 在 GNN 的计算过程中,节点更新通常遵循以下模式: 1. **消息传播**: 将相邻节点的特征作为输入进行加权平均或其他形式的消息传递操作。 2. **状态更新**: 利用前一步得到的消息和当前节点的状态,通过某种函数(通常是神经网络层)更新该节点的新状态。 3. **规范化处理**: 对新生成的节点特征进行标准化或激活函数变换以保持数值稳定性。 这一过程可以用如下公式概括[^1]: \[ h_v^{(l+1)} = \sigma\left(W_l h_v^{(l)} + \sum_{u \in N(v)} W_l' h_u^{(l)}\right), \] 其中 \(h_v^{(l)}\) 表示第 \(v\) 个节点在第 \(l\) 层的隐藏状态;\(W_l\) 和 \(W_l'\) 是可训练参数矩阵;\(N(v)\) 是节点 \(v\) 的邻接集合;\(\sigma\) 是非线性激活函数。 以下是基于 PyTorch 和 DGL 库实现的一个简单的 GCN 中节点更新模块的例子: ```python import torch import dgl.function as fn from torch import nn class GraphConvLayer(nn.Module): def __init__(self, input_dim, output_dim): super(GraphConvLayer, self).__init__() self.linear = nn.Linear(input_dim, output_dim) def forward(self, graph, node_features): with graph.local_scope(): # Step 1: Normalize the adjacency matrix and propagate messages. degs = graph.out_degrees().float().clamp(min=1).unsqueeze(-1) norm = torch.pow(degs, -0.5) shp = norm.shape + (1,) * (node_features.dim() - 1) norm = torch.reshape(norm, shp) # Message passing step graph.ndata['norm'] = norm graph.ndata['h'] = node_features * norm graph.update_all(fn.copy_src(src='h', out='m'), fn.sum(msg='m', out='h')) aggregated_messages = graph.ndata['h'] # State update step using a linear transformation followed by activation function updated_node_features = self.linear(aggregated_messages * norm.squeeze()) return torch.relu(updated_node_features) ``` 上述代码展示了如何在一个自定义的 `GraphConvLayer` 类中完成节点更新的操作。具体来说: - 首先对每个节点的度数进行归一化; - 使用 `graph.update_all()` 方法执行消息传递; - 最终利用全连接层(即线性变换)结合 ReLU 激活函数完成节点状态的更新[^2]。 对于更复杂的架构如 GAT,则引入注意力机制进一步增强模型表达能力[^3]: ```python import dgl.nn.pytorch as dglnn class GATLayer(nn.Module): def __init__(self, in_feats, out_feats, num_heads): super(GATLayer, self).__init__() self.gat_conv = dglnn.GATConv(in_feats=in_feats, out_feats=out_feats, num_heads=num_heads, allow_zero_in_degree=True) def forward(self, g, inputs): outputs = self.gat_conv(g, inputs) return outputs.flatten(start_dim=-2, end_dim=-1) ``` 此段代码实现了带有多头注意力建模关系权重的功能,适用于更加精细的任务需求场景下。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值