MYSQL服务器中途退出

2024-09-28 21:01:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用mysqldb/python将一些数据推送到mysql数据库中。在

该脚本解析一组XML文件以获取数据。在

MySQL服务器似乎退出了,在事务处理的中途给了我一个“2002-服务器没有响应(或者本地MySQL服务器的套接字配置不正确)”的错误-每次我运行它的时候都在不同的地方(所以我假设它不是一个特定的数据块导致它崩溃…)

它可以完美地工作到~12或13个文件,并给出以下错误:

Error 2003: Can't connect to MySQL server on 'localhost' (10055)
Traceback (most recent call last):
File "sigFileParser.py", line 113, in <module>
 doParser(sigfile_filename)
File "sigFileParser.py", line 106, in
 doParser
  doFormatsPush(packedFormats)
File "sigFileParser.py", line 27, in
 doFormatsPush
sys.exit (1)
NameError: global name 'sys' is not defined

一旦发生错误,我就无法进入MySQL控制台或通过PHOPmyadmin

如果我离开一段时间,我可以回到MySQL

MySQL表:

^{pr2}$

以及

CREATE TABLE IF NOT EXISTS formats
(Version int(3),
DateCreated DATETIME,
FormatID int(4),
FormatName TEXT,
PUID TEXT,
FormatVersion TEXT,
FormatMIMEType TEXT,
InternalSignatureID int(4),
Extension TEXT,
HasPriorityOverFileFormatID int(4))

Py代码

from lxml import etree
import re, os, MySQLdb
def doPatternPush(packedPatterns):
 try:
  db = MySQLdb.connect (host = "localhost", user = "root", passwd = "", db = "sigfiles")
  c = db.cursor()
  c.execute('''INSERT INTO sigfiles.patterns
  (Version,DateCreated,SigID,SigSpecificity,ByteSeqReference,MinFragLength,Position,SubSeqMaxOffset,SubSeqMinOffset,Pattern)
   VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)''', packedPatterns)
  db.commit()
  except MySQLdb.Error, e:
  print "Error %d: %s" % (e.args[0], e.args[1])
  sys.exit (1)
 return (db)
def doFormatsPush(packedFormats):
 try:
  db = MySQLdb.connect (host = "localhost", user = "root", passwd = "", db = "sigfiles")
  c = db.cursor()
  c.execute('''INSERT INTO sigfiles.formats
  (Version,DateCreated,FormatID,FormatName,PUID,FormatVersion,FormatMIMEType,InternalSignatureID,Extension,HasPriorityOverFileFormatID)
  VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)''', packedFormats)
  db.commit()
 except MySQLdb.Error, e:
  print "Error %d: %s" % (e.args[0], e.args[1])
  sys.exit (1)
 return(db)
def doParser(sigfile_filename):
 tree = etree.parse(sigfile_filename) 
 root = tree.getroot()
 attributes = root.attrib
 if 'DateCreated' in root.attrib:
  DateCreated = (attributes["DateCreated"])
 if 'Version' in root.attrib:
  Version = (attributes["Version"])
 ##--------- get internal sig details ------------------
 for a in range (len(root[0])):  #loops for sig ID
  attributes = root[0][a].attrib
  SigID=(attributes["ID"])
  SigSpecificity = (attributes["Specificity"])
  for b in range (len(root[0][a])):  # loops for sequence pattern inside each sig
   attributes = root[0][a][b].attrib
   if 'Reference' in root[0][a][b].attrib: 
    ByteSeqReference = (attributes["Reference"])
   else:
    ByteSeqReference = "NULL"  
   attributes = root[0][a][b][0].attrib
   if 'MinFragLength' in root[0][a][b][0].attrib:
    MinFragLength=(attributes["MinFragLength"])
   else: 
    MinFragLength=''
   if 'Position' in root[0][a].attrib:
    Position=(attributes["Position"])
   else:
    Position=''
   if 'SubSeqMaxOffset' in root[0][a][b][0].attrib:
    SubSeqMaxOffset=(attributes["SubSeqMaxOffset"])
   else:
    SubSeqMaxOffsee = ''  
   if 'SubSeqMinOffset' in root[0][a][b][0].attrib:
    SubSeqMinOffset=(attributes["SubSeqMinOffset"])
   else:
    SubSeqMinOffset = ''     
   Pattern = root[0][a][b][0][0].text
   packedPatterns =     [Version,DateCreated,SigID,SigSpecificity,ByteSeqReference,MinFragLength,Position,SubSeqMaxOffset,SubSeqMinOffset,Pattern]
   doPatternPush(packedPatterns)
##-------- get format ID details-------------
 for a in range (len(root[1])):
  attributes = root[1][a].attrib
  if 'ID' in root[1][a].attrib:
   FormatID = (attributes['ID'])
  else:
   FormatID = "NULL" 
  if 'Name' in root[1][a].attrib:
   FormatName = (attributes['Name'])
  else:
   FormatName = "NULL" 
  if 'PUID' in root[1][a].attrib:
   PUID = (attributes['PUID'])
  else:
   PUID = "NULL" 
  if 'Version' in root[1][a].attrib:
   FormatVersion = (attributes['Version'])
  else:
   FormatVersion = "NULL" 
  if 'MIMEType' in root[1][a].attrib:
   FormatMIMEType = (attributes['MIMEType'])
  else:
   FormatMIMEType = "NULL"  
  InternalSignatureID,Extension,HasPriorityOverFileFormatID = ('', 'NULL', '') 
  for b in range (len(root[1][a])): #extracts the tags for each format ID
   tagType = root[1][a][b].tag
   tagText = root[1][a][b].text
   tagType = re.sub('{http://www.nationalarchives.gov.uk/pronom/SignatureFile}', '', tagType)
   if tagType == 'InternalSignatureID':
    InternalSignatureID = tagText
   elif tagType == 'Extension':
    Extension = tagText
    HasPriorityOverFileFormatID = ''
   else:
    HasPriorityOverFileFormatID = tagText
    Extension = 'NULL' 
   packedFormats = [Version,DateCreated,FormatID,FormatName,PUID,FormatVersion,FormatMIMEType,InternalSignatureID,Extension,HasPriorityOverFileFormatID]
   doFormatsPush(packedFormats)
 if __name__ == "__main__":
 path = "C:\Users\NDHA\Desktop\droid sigs all"
 for (path, dirs, files) in os.walk(path):
  for file in files:
   sigfile_filename = str(path)+"\\"+str(file)
   doParser(sigfile_filename) 
   print sigfile_filename
 db.close()     

所有的XML都来自这里:http://www.nationalarchives.gov.uk/aboutapps/pronom/droid-signature-files.htm


Tags: infordbifversionextensionmysqlroot
2条回答

这是您的第一个错误:

Error 2003: Can't connect to MySQL server on 'localhost' (10055)

似乎你在某个时候与MySQL断开了连接。检查您的代码,看看您是否显式或隐式地断开与服务器的连接,同时检查您的MySQL服务器是否仍在监听连接。。。也许你正在从你的应用程序外杀死服务器。。。谁知道呢?:)

你得到的错误告诉你到底出了什么问题

NameError: global name 'sys' is not defined

python文件中没有import sys。在

至于数据库连接,如果您的套接字没有放在/tmp/mysql.sock中,您可以指定在使用unix_socket参数连接到数据库时查找它的位置。在

尝试:

^{pr2}$

其中,将“path”替换为mysql sock的实际路径。在

其他你应该检查的东西,以防不是问题所在:

  • 检查以确保用户名/密码组合正确
  • 尝试停止并重新启动mysqld服务
  • 请检查错误日志文件以了解更具体的错误

相关问题 更多 >