2016-12-06 1 views
0

Мой скрипт обычно правильно вставляет данные в базу данных MySQL, однако, когда я планирую его запускать каждые 10 секунд (это планирование называет этот скрипт каждые 10 секунд) падает примерно в 50% случаев.ВНИМАНИЕ: root: не удалось вставить значения - вставить не всегда успешно в mysql

Любые предложения?

some unimportant code here 

# Calculate pulse length 
elapsed = stop-start 

# Distance pulse travelled in that time is time 
# multiplied by the speed of sound (cm/s) 
distance = elapsed * speedSound 

# That was the distance there and back so halve the value 
distance = distance/2 
distance = '{:f}'.format(distance) 

    print(distance) 

time = time.strftime('%Y-%m-%d %H:%M:%S') 
print(time) 
# Open database connection 
db = MySQLdb.connect("192.168.2.3","sonic","123456","Pi") 


cursor = db.cursor() 


sql = "INSERT INTO UltraSonic (distance, time) VALUES (%s, %s)" 

try: 

    cursor.execute(sql, (distance, time)) 

    db.commit() 

# Rollback in case there is any error 
# db.rollback() 
except MySQLdb.IntegrityError: 
    logging.warn("failed to insert values %s, %s", distance, time) 
# disconnect from server 
finally: 
    db.close() 
print ("Ok") 
+1

Пожалуйста, укажите любые ошибки, с которыми вы сталкиваетесь. Вы можете удалить свой «кроме MySQLdb.IntegrityError», чтобы вы могли получить реальное исключение, а не просто регистрировать предупреждение. – joeb

+0

not usre, если это правильный вывод, я просто удалил исключение из кода: Traceback (последний последний звонок): Файл «sonic.py», строка 80, в cursor.execute (sql, (расстояние, время)) Файл «/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py», строка 174, в исполнении self.errorhandler (self, exc, value) Файл «/ usr/lib/python2 .7/dist-packages/MySQLdb/connections.py ", строка 36, в defaulterrorhandler Повысить errorclass, errorvalue _mysql_exceptions.IntegrityError: (1062," Дублировать запись '17 .384983 'для ключа' PRIMARY '") –

+0

Вы пытаетесь чтобы вставить строку, которая нарушит правила таблицы. Вам нужно будет настроить таблицу или код, чтобы этого не произошло. – joeb

ответ

0

Проблема была в таблице БД, ключ был установлен в ИРП, то, что не позволяет повторяющихся записей, которые мне нужны.

удаление PRI решило проблему. спасибо, joeb !!

 Смежные вопросы

  • Нет связанных вопросов^_^