小编ale*_*aui的帖子

插入时自动截断数据

我的 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 有关,但我已经阅读并找不到任何有用的信息(我真的不认为这绝对是解释,但是我只是把它放在那里,以便您尽可能多地了解问题)。

非常感谢

php mysql windows pdo

5
推荐指数
1
解决办法
6518
查看次数

使用 Python 从 Unix 套接字连接读取和写入

我正在使用 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 套接字支持监听吗?否则,阅读和写作的正确方法是什么?

任何帮助表示赞赏:)

python sockets unix-socket

5
推荐指数
2
解决办法
3万
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1

python ×1

sockets ×1

unix-socket ×1

windows ×1