我的 MySQL 服务器(在 Windows 2008 Server 上通过 PDO 使用 PHP 运行)在插入长度超过列中允许的字符串时返回错误代码 1406(字段数据太长)。问题是我在某处读到 MySQL 通常在非严格模式下截断数据。我在 my.ini 中更改了 sql_mode,这样即使在启动时它也不会进入严格模式(当前为“”),但它仍然给我错误并回滚,因此数据丢失(截断是网站的期望行为)。
我进入命令行并在较短的 varchar 字段中插入一个长字符串,它确实截断了数据并保存,但它是站点没有。当我将模式改回严格时,它没有在命令行中截断(只有错误)。
此外,我使站点输出当前的 sql 模式,包括全局和会话(@@GLOBAL.sql_mode 和 @@SESSION.sql_mode),它们都输出“”,但不能按预期工作。
有谁知道是什么导致了这种情况和/或如何改变它?
我怀疑这可能与 PDO 启用 PDO::ATTR_ERRMODE = PDO::ERRMODE_EXCEPTION 有关,但我已经阅读并找不到任何有用的信息(我真的不认为这绝对是解释,但是我只是把它放在那里,以便您尽可能多地了解问题)。
非常感谢
我正在使用 Python 试验 Unix 套接字。我想创建一个创建并绑定到套接字、等待命令并发送响应的服务器。
客户端将连接到套接字,发送一个命令,打印响应并关闭连接。
这就是我在服务器端所做的:
# -*- coding: utf-8 -*-
import socket
import os, os.path
import time
from collections import deque
if os.path.exists("/tmp/socket_test.s"):
os.remove("/tmp/socket_test.s")
server = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
server.bind("/tmp/socket_test.s")
while True:
server.listen(1)
conn, addr = server.accept()
datagram = conn.recv(1024)
if datagram:
tokens = datagram.strip().split()
if tokens[0].lower() == "post":
flist.append(tokens[1])
conn.send(len(tokens) + "")
else if tokens[0].lower() == "get":
conn.send(tokens.popleft())
else:
conn.send("-1")
conn.close()
Run Code Online (Sandbox Code Playgroud)
但是socket.error: [Errno 95] Operation not supported
当我试图倾听时我得到了。
unix 套接字支持监听吗?否则,阅读和写作的正确方法是什么?
任何帮助表示赞赏:)