Send Motion-user mailing list submissions to motion-user@lists.sourceforge.net
To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/motion-user or, via email, send a message with subject or body 'help' to motion-user-requ...@lists.sourceforge.net You can reach the person managing the list at motion-user-ow...@lists.sourceforge.net When replying, please edit your Subject line so it is more specific than "Re: Contents of Motion-user digest..." Today's Topics: 1. Re: Motion setup (Barry Martin) 2. Re: Duplicate SQL entries for every event (David Powell) ---------------------------------------------------------------------- Message: 1 Date: Mon, 30 Aug 2021 07:53:51 -0500 From: Barry Martin <barry3mar...@gmail.com> To: motion-user@lists.sourceforge.net Subject: Re: [Motion-user] Motion setup Message-ID: <a3544cc7-f280-e3dd-e910-e30b8bd5b...@gmail.com> Content-Type: text/plain; charset="utf-8"; Format="flowed" Hi Billy! > My first system was a mighty Timex Sinclair?with the?high speed of a > whopping 4k. I used a pencil?to type on it. I still have it. I never had one but bit of trivia: their kits and assembled units were manufactured in Nashua, NH, where I was raised; for a while the Post Office didn't know where to send the orders people mailed in: "1 Sinclair Plaza" (IIRC) didn't exist!? Ended up they had renamed their location (oddly enough I'm remembering it being the old Post Office building) for marketing purposes but the information never made it through.? Dad had sent me the newspaper article; I was in college at the time. > Then I went to a Radio Shack Tandy.?The?TRS-80?Micro Computer?System. > Don't remember the speed on it. Then to the Commodore Pet, 64, 1200 > and then ?the?Amiga 2000. Now the PC. I run a dual boot. Linux Mint on > one end and win 10 on the of the other. Love that Linux. OK, so you should be good with installing the Linux version.? On what device is up to you.? I lean towards dedicated devices because over the decades I have had computers suddenly fail and if everything on one device would take out everything.? Plus a reboot or lockup on one computer doesn't break another.? Not that I don't multitask and multifunction, just split things up a little. Depending on the physical layout remote computers (Raspberry Pi's are nice and small!) might be better.? I have the USB cameras mounted in a couple of windows, on the inside; RPi semi-hidden, WiFi for saving and live-streaming.? One RPi is on a small UPS, the other on a UPS HAT. When I was originally looking into wireless cameras most which did what I wanted and in a decent price range were connecting to an external website and then returning the picture back to me. I'm not too concerned with Russian, Chinese, etc., hackers but more if my Internet connections fails or if the external website goes belly-up: I can't see my own stuff!? As you already have cameras in place you should be able to use those with Motion. Wireless ones I'm not sure, only because I haven't done it (yet!).? I'm pretty sure you need one camera.conf file for each, ... (!) ... and that's probably where one can use their 'main' computer for Motion.? (The wired vs. wireless configuring differs a bit.) <https://www.wisestamp.com/create-own-signature/?utm_source=promotion&utm_medium=signature&utm_campaign=create_your_own&srcid=> -------------- next part -------------- An HTML attachment was scrubbed... ------------------------------ Message: 2 Date: Mon, 30 Aug 2021 15:58:42 -0400 From: David Powell <da...@depowell.com> To: tosiara <tosi...@gmail.com> Cc: Motion discussion list <motion-user@lists.sourceforge.net> Subject: Re: [Motion-user] Duplicate SQL entries for every event Message-ID: <43836df4-4fb1-d80a-b98b-417d29ddf...@depowell.com> Content-Type: text/plain; charset="utf-8"; Format="flowed" That's some pretty good detective work there. I tip my hat to you. However, there's a problem. The reason I was using %C is to ensure that the snapshot and movie files had the exact same name root, with .jpg and .mp4 for the extensions, respectively.? This is because my front-end display system needs to show the snapshot as a thumbnail, which has a link to the movie.? If I don't use %C, then they likely will have different name roots which will break the display algorithm.? I could add another field for the snapshot filename, but then I'd have to change the display algorithm, and that's some really old code that I'd rather not mess with. Also, I'm kind of dubious about the filename being the issue because I rarely get videos that are longer than 120 seconds. Almost all of them are in the 1-5 second range. Some go as long as 30 or 45 seconds if it's triggered by something other than a bug flying through the scene or a car going by.? In fact, my front end flags videos that are longer than 10 seconds to alert me to pay closer attention to them. I didn't include the filename as part of the primary key because the timestamp /is/ basically the filename, and it is part of the PK. Perhaps I should just increase the /movie_max_time/ to a much larger number, to see if the problem goes away? Thanks, David On 8/30/21 7:59 AM, tosiara wrote: > Here is quite long and detailed explanation of why you are having this > issue. I hope someone else will also benefit from this analysis > > First, your config: > > sql_log_picture ? ? ? ? ? off > sql_log_snapshot ? ? ? ? ?off > sql_log_movie ? ? ? ? ? ? on > sql_log_timelapse ? ? ? ? off > sql_query ? ? ? ? ? ? ? ? <empty> > > sql_query > SQL query string that is sent to the database when the sql_log_* item > is triggered. > > sql_log_movie: > Log to the database when creating motion triggered movie file. > > You have defined "sql_log_movie", but did not specify "sql_query". So > this param will be ignored and you will see a message "Ignoring empty > sql query". > > sql_query_start ? ? ? ? ? <empty> > sql_query_stop ? ? ? ? ? ?INSERT INTO..... > > sql_query_start: > SQL query that executes against the event table which tracks the > unique events of motion > > sql_query_stop: > SQL query that executes after a movie has finished > > Event start will be "Ignoring empty sql query", and for every finished > movie a query will be executed: > > INSERT INTO events > (server_number,camera_number,event_number,event_date,video_length,filename) > VALUES (1,%t,%v,{ts '%C'},null,'%f'); > > Here, (camera_number,event_number,event_date) are PRIMARY KEY > (server_number is hardcoded in query "1"). > %t - camera id > %v - event id > %C == %Y%m%d%H%M%S - event's start timestamp > > All those values do not change across an event. Example: > 1-5-1-2021-08-28 09:42:12. Which means you can only insert this record > once per given event. If you try to insert it more times - you will > get "Duplicate entry" error. This is what is happening in your case. > > Now lets check why you run the same query multiple times per event? > > movie_max_time ? ? ? ? ? ?120 > > If event is running longer than 120 secods, the movie will be flushed > and written to the disk (triggering sql_query_stop). And a new movie > file started. That movie is also going to finish at some time and will > trigger sql_query_stop once again. This is where you get the conflict. > Look: > > [5:ml5:pumpYard] [NTC] [DBL] [Aug 28 09:42:08] dbse_init: Database > backend mysql > [5:ml5:pumpYard] [WRN] [DBL] [Aug 28 09:42:12] dbse_firstmotion: > Ignoring empty sql query *<--- EVENT_FIRSTMOTION, > event_sqlfirstmotion, sql_query_start* > [5:ml5:pumpYard] [INF] [EVT] [Aug 28 09:42:12] event_new_video: Source > FPS 4 > [5:ml5:pumpYard] [WRN] [DBL] [Aug 28 09:42:12] dbse_newfile: Ignoring > empty sql query *<--- ?EVENT_FILECREATE, event_sqlnewfile, > sql_query_start * > [5:ml5:pumpYard] [NTC] [EVT] [Aug 28 09:42:12] event_newfile: File of > type 8 saved to: > /var/www/html/cams/pumpYard/2021-08-28/5-01-20210828094212.mp4 > [5:ml5:pumpYard] [NTC] [ALL] [Aug 28 09:42:12] motion_detected: Motion > detected - starting event 1 > > [5:ml5:pumpYard] [DBG] [DBL] [Aug 28 09:44:10] dbse_exec_mysql: > Executing MySQL query*<--- EVENT_FILECLOSE, event_sqlfileclose, > sql_query_stop, INSERT.....* > [5:ml5:pumpYard] [INF] [EVT] [Aug 28 09:44:10] event_new_video: Source > FPS 4 > [5:ml5:pumpYard] [WRN] [DBL] [Aug 28 09:44:10] dbse_newfile: Ignoring > empty sql query *<--- ?EVENT_FILECREATE, event_sqlnewfile, > sql_query_start * > [5:ml5:pumpYard] [NTC] [EVT] [Aug 28 09:44:10] event_newfile: File of > type 8 saved to: > /var/www/html/cams/pumpYard/2021-08-28/5-01-20210828094212.mp4 > > [5:ml5:pumpYard] [DBG] [DBL] [Aug 28 09:46:10] dbse_exec_mysql: > Executing MySQL query *<--- EVENT_FILECLOSE, event_sqlfileclose, > sql_query_stop, the same identical INSERT.....* > [5:ml5:pumpYard] [ERR] [DBL] [Aug 28 09:46:10] dbse_exec_mysql: MySQL > query failed Duplicate entry '1-5-1-2021-08-28 09:42:12' for key > 'events.PRIMARY' error code 1062: Connection timed out > [5:ml5:pumpYard] [INF] [EVT] [Aug 28 09:46:10] event_new_video: Source > FPS 4 > [5:ml5:pumpYard] [WRN] [DBL] [Aug 28 09:46:10] dbse_newfile: Ignoring > empty sql query *<--- ?EVENT_FILECREATE, event_sqlnewfile, > sql_query_start * > [5:ml5:pumpYard] [NTC] [EVT] [Aug 28 09:46:10] event_newfile: File of > type 8 saved to: > /var/www/html/cams/pumpYard/2021-08-28/5-01-20210828094212.mp4 > > > Also note, that in this case you will be overwriting new movie files, as: > > movie_filename ? ? ? ? ? ?%Y-%m-%d/%t-%v-%C > > It uses the same value from the sql query. It means, the file name > will stay the same across an event. Next file will overwrite the > previous one as it has the same name. > > [5:ml5:pumpYard] [NTC] [EVT] [Aug 28 09:42:12] event_newfile: File of > type 8 saved to: > /var/www/html/cams/pumpYard/2021-08-28/5-01-20210828094212.mp4 > [5:ml5:pumpYard] [NTC] [EVT] [Aug 28 09:44:10] event_newfile: File of > type 8 saved to: > /var/www/html/cams/pumpYard/2021-08-28/5-01-20210828094212.mp4 > [5:ml5:pumpYard] [NTC] [EVT] [Aug 28 09:46:10] event_newfile: File of > type 8 saved to: > /var/www/html/cams/pumpYard/2021-08-28/5-01-20210828094212.mp4 > > In order to fix your issue: > 1. change movie file name format so it stays unique inside an event > (don't use %C, but copy %Y%m%d%H%M%S) > 2. make file name NOT NULL and add it to the PRIMARY KEY > > > > On Sat, Aug 28, 2021 at 7:46 PM David Powell <da...@depowell.com > <mailto:da...@depowell.com>> wrote: > > Done.? Log is at > https://www.dropbox.com/s/zwde53qtywnlb72/motion.log?dl=0 > <https://www.dropbox.com/s/zwde53qtywnlb72/motion.log?dl=0> > > David > > > On 8/28/21 5:18 AM, tosiara wrote: >> Could you make the full log with -d 9, but without specifying DBL >> now? Let it log everything and upload the raw log pastebin or >> somewhere >> >> On Sat, Aug 28, 2021, 02:29 David Powell <da...@depowell.com >> <mailto:da...@depowell.com>> wrote: >> >> Hi Tosiara. >> >> There's only one query in my configuration, so I'm not sure >> how it can be run more than once with the same event number.? >> Did your testing include 7 cameras like my setup?? Maybe that >> has something to do with it. >> >> I don't really want to change and recompile the Motion code >> right now, because it's running on a server that is 650 miles >> away, and I don't want to take a chance on messing something >> up. I can do it in a month or so when I'm back local to the >> server. >> >> I did start it in debug mode (/sudo -u motion //motion -n -d >> 9 -k DBL/) for a bit, however, and the resulting log is below: >> >> [0:motion] [NTC] [ALL] [Aug 27 16:23:27] motion_startup: >> Motion 4.3.1+git20210613-11320aa Started >> [0:motion] [NTC] [ALL] [Aug 27 16:23:27] motion_startup: >> Using log type (DBL) log level (ALL) >> [0:motion] [DBG] [DBL] [Aug 27 16:23:27] motion_ntc: mysql? : >> available >> [0:motion] [DBG] [DBL] [Aug 27 16:23:27] motion_ntc: MariaDB: >> not available >> [0:motion] [DBG] [DBL] [Aug 27 16:23:27] motion_ntc: sqlite3: >> not available >> [0:motion] [DBG] [DBL] [Aug 27 16:23:27] motion_ntc: pgsql? : >> not available >> [0:motion] [DBG] [DBL] [Aug 27 16:23:27] motion_ntc: nls??? : >> available >> [0:motion] [DBG] [DBL] [Aug 27 16:23:27] dbse_global_init: >> Initializing database >> [1:ml1:patio] [NTC] [DBL] [Aug 27 16:23:29] dbse_init: >> Database backend mysql >> [2:ml2:shop] [NTC] [DBL] [Aug 27 16:23:29] dbse_init: >> Database backend mysql >> [3:ml3:pumphouse] [NTC] [DBL] [Aug 27 16:23:30] dbse_init: >> Database backend mysql >> [7:ml7:gate] [NTC] [DBL] [Aug 27 16:23:30] dbse_init: >> Database backend mysql >> [6:ml6:shed] [NTC] [DBL] [Aug 27 16:23:44] dbse_init: >> Database backend mysql >> [4:ml4:backyard] [NTC] [DBL] [Aug 27 16:23:44] dbse_init: >> Database backend mysql >> [1:ml1:patio] [WRN] [DBL] [Aug 27 16:23:47] dbse_firstmotion: >> Ignoring empty sql query >> [1:ml1:patio] [WRN] [DBL] [Aug 27 16:23:47] dbse_newfile: >> Ignoring empty sql query >> [5:ml5:pumpYard] [NTC] [DBL] [Aug 27 16:23:47] dbse_init: >> Database backend mysql >> [1:ml1:patio] [DBG] [DBL] [Aug 27 16:24:47] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 16:40:16] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 16:40:16] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 16:41:16] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 16:51:11] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 16:51:11] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 16:53:04] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 16:54:55] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 16:54:55] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 16:56:26] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:00:04] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:00:04] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:01:06] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:05:07] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:05:07] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:06:09] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:06:55] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:06:55] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:07:56] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:08:17] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:08:17] dbse_newfile: >> Ignoring empty sql query >> [1:ml1:patio] [WRN] [DBL] [Aug 27 17:08:50] dbse_firstmotion: >> Ignoring empty sql query >> [1:ml1:patio] [WRN] [DBL] [Aug 27 17:08:50] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:09:18] dbse_exec_mysql: >> Executing MySQL query >> [1:ml1:patio] [DBG] [DBL] [Aug 27 17:09:51] dbse_exec_mysql: >> Executing MySQL query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:13:09] dbse_firstmotion: >> Ignoring empty sql query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:13:09] dbse_newfile: >> Ignoring empty sql query >> [1:ml1:patio] [WRN] [DBL] [Aug 27 17:13:55] dbse_firstmotion: >> Ignoring empty sql query >> [1:ml1:patio] [WRN] [DBL] [Aug 27 17:13:55] dbse_newfile: >> Ignoring empty sql query >> [6:ml6:shed] [DBG] [DBL] [Aug 27 17:14:10] dbse_exec_mysql: >> Executing MySQL query >> [1:ml1:patio] [DBG] [DBL] [Aug 27 17:14:57] dbse_exec_mysql: >> Executing MySQL query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:15:43] dbse_firstmotion: >> Ignoring empty sql query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:15:43] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:16:35] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:16:35] dbse_newfile: >> Ignoring empty sql query >> [6:ml6:shed] [DBG] [DBL] [Aug 27 17:16:44] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:18:11] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:18:36] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:18:36] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:19:37] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:27:29] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:27:29] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:28:31] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:32:11] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:32:11] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:33:59] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:40:08] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:40:08] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:41:09] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:42:31] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:42:31] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:44:30] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:44:30] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:45:11] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [ERR] [DBL] [Aug 27 17:45:11] dbse_exec_mysql: >> MySQL query failed Duplicate entry '1-7-13-2021-08-27 >> 17:42:31' for key 'events.PRIMARY' error code 1062: >> Connection timed out >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:47:48] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:47:48] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:48:49] dbse_exec_mysql: >> Executing MySQL query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:48:54] dbse_firstmotion: >> Ignoring empty sql query >> [7:ml7:gate] [WRN] [DBL] [Aug 27 17:48:54] dbse_newfile: >> Ignoring empty sql query >> [7:ml7:gate] [DBG] [DBL] [Aug 27 17:49:55] dbse_exec_mysql: >> Executing MySQL query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:57:26] dbse_firstmotion: >> Ignoring empty sql query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:57:26] dbse_newfile: >> Ignoring empty sql query >> [6:ml6:shed] [DBG] [DBL] [Aug 27 17:58:27] dbse_exec_mysql: >> Executing MySQL query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:59:28] dbse_firstmotion: >> Ignoring empty sql query >> [6:ml6:shed] [WRN] [DBL] [Aug 27 17:59:28] dbse_newfile: >> Ignoring empty sql query >> [6:ml6:shed] [DBG] [DBL] [Aug 27 18:00:28] dbse_exec_mysql: >> Executing MySQL query >> >> You can see the duplicate entry error about 12 lines from the >> bottom of the log.? There also seems to be a lot of "Ignoring >> empty sql query" lines.? Not sure if that's normal or not. >> >> HTH, David >> >> >> On 8/27/21 6:55 AM, tosiara wrote: >>> I was only able to reproduce the issue if: >>> >>> 1. sql_log_movie on and both sql_query_stop and sql_query >>> are set to the same query >>> 2. when only sql_query defined and sql_log_picture on and >>> sql_log_movie on >>> >>> The cause is the design of your query. It contains event's >>> data that does not change across the event, so if you are >>> running multiple sql queries you will get that primary key >>> conflict, as you are effectively inserting the same data >>> multiple times. >>> >>> You can change the code to dump the query: >>> >>> diff --git a/src/dbse.c b/src/dbse.c >>> index e64896e..c645ae4 100644 >>> --- a/src/dbse.c >>> +++ b/src/dbse.c >>> @@ -368,7 +368,7 @@ static void dbse_exec_mysql(char >>> *sqlquery, struct context *cnt, int save_id) >>> ?{ >>> ? ? ?#if defined(HAVE_MYSQL) >>> ? ? ? ? ?if (mystreq(cnt->conf.database_type, "mysql")) { >>> - ? ? ? ? ? ?MOTION_LOG(DBG, TYPE_DB, NO_ERRNO, _("Executing >>> mysql query")); >>> + ? ? ? ? ? ?MOTION_LOG(DBG, TYPE_DB, NO_ERRNO, _("Executing >>> mysql query %s"), sqlquery); >>> ? ? ? ? ? ? ?if (mysql_query(cnt->database_mysql, sqlquery) >>> != 0) { >>> ? ? ? ? ? ? ? ? ?int error_code = >>> mysql_errno(cnt->database_mysql); >>> >>> And run motion with DBL debug: >>> >>> motion -c motion-mysql.conf -n -d 9 -k DBL >>> >>> Then you will see which queries and when motion tries to insert >>> >>> [1:ml1:patio] [INF] [EVT] event_new_video: Source FPS 10 >>> [1:ml1:patio] [INF] [ENC] ffmpeg_set_quality: libx264 codec >>> vbr/crf/bit_rate: 28 >>> [1:ml1:patio] [DBG] [DBL] dbse_exec_mysql: Executing mysql >>> query INSERT INTO events >>> >>> (server_number,camera_number,event_number,event_date,video_length,filename) >>> VALUES (1,1,01,{ts >>> '20210827135336'},null,'./2021-08-27/1-01-20210827135336.mp4'); >>> [1:ml1:patio] [NTC] [EVT] event_newfile: File of type 8 >>> saved to: ./2021-08-27/1-01-20210827135336.mp4 >>> [1:ml1:patio] [NTC] [ALL] motion_detected: Motion detected - >>> starting event 1 >>> [1:ml1:patio] [DBG] [DBL] dbse_exec_mysql: Executing mysql >>> query INSERT INTO events >>> >>> (server_number,camera_number,event_number,event_date,video_length,filename) >>> VALUES (1,1,01,{ts >>> '20210827135336'},null,'./2021-08-27/1-01-20210827135336.jpg'); >>> [1:ml1:patio] [ERR] [DBL] dbse_exec_mysql: Mysql query >>> failed Duplicate entry '1-1-1-2021-08-27 13:53:36' for key >>> 'events.PRIMARY' error code 1062: Connection timed out >>> [1:ml1:patio] [NTC] [EVT] event_newfile: File of type 1 >>> saved to: ./2021-08-27/1-01-20210827135336.jpg >>> >>> Please send your log with -d 9 >>> >>> >>> On Fri, Aug 27, 2021 at 1:42 PM tosiara <tosi...@gmail.com >>> <mailto:tosi...@gmail.com>> wrote: >>> >>> Ah, ok, I see what you mean. You have sent it as a snit >>> earlier and GMail collapsed that section thinking it was >>> a quote :D >>> Thanks, looking into it now >>> >>> >>> On Fri, Aug 27, 2021 at 1:39 PM David Powell >>> <da...@depowell.com <mailto:da...@depowell.com>> wrote: >>> >>> Hi. I'm not sure what you mean,? they're all listed >>> in the section under "Database and SQL Configuration >>> parameters".Is there one in particular that you are >>> looking for? >>> >>> David >>> >>> On August 27, 2021 4:29:33 AM tosiara >>> <tosi...@gmail.com <mailto:tosi...@gmail.com>> wrote: >>> >>>> Hi, >>>> >>>> I wanted to check your issue, but I don't see any >>>> database related parameters in your provided configs >>>> >>>> On Fri, Aug 13, 2021 at 6:23 PM David Powell >>>> <da...@depowell.com <mailto:da...@depowell.com>> wrote: >>>> >>>> I was going to open a bug report, but haven't >>>> quite gotten around to it yet. Sorry. >>>> >>>> Here's the output from /describe events;/ >>>> >>>> >>>> *Field** >>>> * *Type* *Null* *Key* *Default* *Extra* >>>> server_number int NO PRI <null> >>>> camera_number int NO PRI <null> >>>> event_number int NO PRI <null> >>>> event_date varchar(45) NO PRI >>>> >>>> video_length int YES >>>> <null> >>>> filename varchar(200) YES >>>> <null> >>>> >>>> >>>> This is my main motion.conf. I can supply the >>>> individual camera config files but they're >>>> pretty simple.? I'll put one of them below the >>>> main config. >>>> >>>> # /usr/local/etc/motion/motion.conf >>>> # >>>> # This config file was generated by motion >>>> 4.1.1+git20181002-062a328 >>>> # at 2021-06-08T17:01:40 >>>> >>>> >>>> >>>> ############################################################ >>>> # System control configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Start in daemon (background) mode and release >>>> terminal. >>>> daemon on >>>> >>>> # Start in Setup-Mode, daemon disabled. >>>> setup_mode off >>>> >>>> # File to store the process ID. >>>> ; pid_file value >>>> >>>> # File to write logs messages into.? If not >>>> defined stderr and syslog is used. >>>> log_file /var/log/motion/motion.log >>>> >>>> # Level of log messages [1..9] (EMG, ALR, CRT, >>>> ERR, WRN, NTC, INF, DBG, ALL). >>>> log_level 4 >>>> >>>> # Filter to log messages by type (COR, STR, >>>> ENC, NET, DBL, EVT, TRK, VID, ALL). >>>> log_type ALL >>>> >>>> # Do not sound beeps when detecting motion >>>> quiet on >>>> >>>> # Native language support. >>>> native_language on >>>> >>>> # User defined name for the camera. >>>> ; camera_name value >>>> >>>> # Numeric identifier for the camera. >>>> camera_id 0 >>>> >>>> # Target directory for pictures, snapshots and >>>> movies >>>> ; target_dir value >>>> >>>> # Video device (e.g. /dev/video0) to be used >>>> for capturing. >>>> videodevice /dev/video0 >>>> >>>> # Parameters to control video device.? See >>>> motion_guide.html >>>> ; vid_control_params value >>>> >>>> # Preferred color palette to be used for the >>>> video device >>>> v4l2_palette 17 >>>> >>>> # The input number to be used on the video device. >>>> input -1 >>>> >>>> # The video norm to use for video capture and >>>> TV tuner cards. >>>> norm 0 >>>> >>>> # The frequency to set the tuner to (kHz) for >>>> TV tuner cards >>>> frequency 0 >>>> >>>> # The Motion method to use to change the >>>> brightness/exposure on video device. >>>> auto_brightness 0 >>>> >>>> # Device name (e.g. /dev/tuner0) to be used for >>>> capturing when using tuner as source >>>> ; tunerdevice value >>>> >>>> # Number of frames to capture in each >>>> roundrobin step >>>> roundrobin_frames 1 >>>> >>>> # Number of frames to skip before each >>>> roundrobin step >>>> roundrobin_skip 1 >>>> >>>> # Try to filter out noise generated by roundrobin >>>> roundrobin_switchfilter off >>>> >>>> # The full URL of the network camera stream. >>>> ; netcam_url value >>>> >>>> # Optional high resolution URL for rtsp/rtmp >>>> cameras only. >>>> ; netcam_highres value >>>> >>>> # Username and password for network camera. >>>> Syntax username:password >>>> ; netcam_userpass value >>>> >>>> # The method for keep-alive of network socket >>>> for mjpeg streams. >>>> netcam_keepalive on >>>> >>>> # The URL to use for a netcam proxy server. >>>> ; netcam_proxy value >>>> >>>> # Use less strict jpeg checks for network cameras. >>>> netcam_tolerant_check on >>>> >>>> # Use TCP transport for RTSP/RTMP connections >>>> to camera. >>>> netcam_use_tcp on >>>> >>>> # Name of mmal camera (e.g. vc.ril.camera for >>>> pi camera). >>>> ; mmalcam_name value >>>> >>>> # Camera control parameters (see >>>> raspivid/raspistill tool documentation) >>>> ; mmalcam_control_params value >>>> >>>> >>>> ############################################################ >>>> # Image Processing configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Image width in pixels. >>>> width 640 >>>> >>>> # Image height in pixels. >>>> height 480 >>>> >>>> # Maximum number of frames to be captured per >>>> second. >>>> framerate 15 >>>> >>>> # Minimum time in seconds between capturing >>>> picture frames from the camera. >>>> minimum_frame_time 0 >>>> >>>> # Number of degrees to rotate image. >>>> rotate 0 >>>> >>>> # Flip image over a given axis >>>> flip_axis none >>>> >>>> # Draw a locate box around the moving object. >>>> locate_motion_mode preview >>>> >>>> # Set the look and style of the locate box. >>>> locate_motion_style redbox >>>> >>>> # Text to be overlayed in the lower left corner >>>> of images >>>> text_left CAMERA1 >>>> >>>> # Text to be overlayed in the lower right >>>> corner of images. >>>> text_right %Y-%m-%d\n%T-%q >>>> >>>> # Overlay number of changed pixels in upper >>>> right corner of images. >>>> text_changes off >>>> >>>> # Scale factor for text overlayed on images. >>>> text_scale 1 >>>> >>>> # The special event conversion specifier %C >>>> text_event %Y%m%d%H%M%S >>>> >>>> >>>> ############################################################ >>>> # Motion detection configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Always save pictures and movies even if there >>>> was no motion. >>>> emulate_motion off >>>> >>>> # Threshold for number of changed pixels that >>>> triggers motion. >>>> threshold 2500 >>>> >>>> # Enable tuning of the threshold down if possible. >>>> threshold_tune off >>>> >>>> # Noise threshold for the motion detection. >>>> noise_level 32 >>>> >>>> # Automatically tune the noise threshold >>>> noise_tune on >>>> >>>> # Despeckle the image using (E/e)rode or >>>> (D/d)ilate or (l)abel. >>>> despeckle_filter EedDl >>>> >>>> # Area number used to trigger the >>>> on_area_detected script. >>>> ; area_detect value >>>> >>>> # Full path and file name for motion detection >>>> mask PGM file. >>>> ; mask_file value >>>> >>>> # Full path and file name for privacy mask PGM >>>> file. >>>> ; mask_privacy value >>>> >>>> # The value defining how slow or fast the smart >>>> motion mask created and used. >>>> smart_mask_speed 0 >>>> >>>> # Percentage of image that triggers a >>>> lightswitch detected. >>>> lightswitch_percent 75 >>>> >>>> # When lightswitch is detected, ignore this >>>> many frames >>>> lightswitch_frames 3 >>>> >>>> # Number of images that must contain motion to >>>> trigger an event. >>>> minimum_motion_frames 1 >>>> >>>> # Gap in seconds of no motion detected that >>>> triggers the end of an event. >>>> event_gap 60 >>>> >>>> # The number of pre-captured (buffered) >>>> pictures from before motion. >>>> pre_capture 6 >>>> >>>> # Number of frames to capture after motion is >>>> no longer detected. >>>> post_capture 3 >>>> >>>> >>>> ############################################################ >>>> # Script execution configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Command to be executed when an event starts. >>>> ; on_event_start value >>>> >>>> # Command to be executed when an event ends. >>>> ; on_event_end value >>>> >>>> # Command to be executed when a picture is saved. >>>> ; on_picture_save value >>>> >>>> # Command to be executed when motion in a >>>> predefined area is detected >>>> ; on_area_detected value >>>> >>>> # Command to be executed when motion is detected >>>> ; on_motion_detected value >>>> >>>> # Command to be executed when a movie file is >>>> created. >>>> ; on_movie_start value >>>> >>>> # Command to be executed when a movie file is >>>> closed. >>>> on_movie_end java -cp >>>> /usr/local/bin/CamSummary.jar >>>> david/camera/SpecUpdater %f >>>> >>>> # Command to be executed when a camera can't be >>>> opened or if it is lost >>>> ; on_camera_lost value >>>> >>>> # Command to be executed when a camera that was >>>> lost has been found. >>>> ; on_camera_found value >>>> >>>> >>>> ############################################################ >>>> # Picture output configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Output pictures when motion is detected >>>> picture_output best >>>> >>>> # Output pictures with only the pixels moving >>>> object (ghost images) >>>> picture_output_motion off >>>> >>>> # Format for the output pictures. >>>> picture_type jpeg >>>> >>>> # The quality (in percent) to be used in the >>>> picture compression >>>> picture_quality 75 >>>> >>>> # Text to include in a JPEG EXIF comment >>>> ; picture_exif value >>>> >>>> # File name(without extension) for pictures >>>> relative to target directory >>>> picture_filename %Y-%m-%d/%t-%v-%C >>>> >>>> >>>> ############################################################ >>>> # Snapshot output configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Make automated snapshot every N seconds >>>> snapshot_interval 0 >>>> >>>> # File name(without extension) for snapshots >>>> relative to target directory >>>> snapshot_filename %v-%Y%m%d%H%M%S-snapshot >>>> >>>> >>>> ############################################################ >>>> # Movie output configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Create movies of motion events. >>>> movie_output on >>>> >>>> # Create movies of moving pixels of motion events. >>>> movie_output_motion off >>>> >>>> # Maximum length of movie in seconds. >>>> movie_max_time 120 >>>> >>>> # The fixed bitrate to be used by the movie >>>> encoder. Ignore quality setting >>>> movie_bps 400000 >>>> >>>> # The encoding quality of the movie. (0=use >>>> bitrate. 1=worst quality, 100=best) >>>> movie_quality 45 >>>> >>>> # Container/Codec to used for the movie. See >>>> motion_guide.html >>>> movie_codec mp4 >>>> >>>> # Duplicate frames to achieve "framerate" fps. >>>> movie_duplicate_frames off >>>> >>>> # Pass through from the camera to the movie >>>> without decode/encoding. >>>> movie_passthrough off >>>> >>>> # File name(without extension) for movies >>>> relative to target directory >>>> movie_filename %Y-%m-%d/%t-%v-%C >>>> >>>> # Use pipe and external encoder for creating >>>> movies. >>>> movie_extpipe_use off >>>> >>>> # Full path and options for external encoder of >>>> movies from raw images >>>> ; movie_extpipe value >>>> >>>> >>>> ############################################################ >>>> # Timelapse output configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Interval in seconds between timelapse captures. >>>> timelapse_interval 0 >>>> >>>> # Timelapse file rollover mode. See >>>> motion_guide.html for options and uses. >>>> timelapse_mode daily >>>> >>>> # Frame rate for timelapse playback >>>> timelapse_fps 30 >>>> >>>> # Container/Codec for timelapse movie. >>>> timelapse_codec mpg >>>> >>>> # File name(without extension) for timelapse >>>> movies relative to target directory >>>> timelapse_filename %Y%m%d-timelapse >>>> >>>> >>>> ############################################################ >>>> # Loopback pipe configuration parameters >>>> >>>> ############################################################ >>>> >>>> # v4l2 loopback device to receive normal images >>>> ; video_pipe value >>>> >>>> # v4l2 loopback device to receive motion images >>>> ; video_pipe_motion value >>>> >>>> >>>> ############################################################ >>>> # Webcontrol configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Port number used for the webcontrol. >>>> webcontrol_port 1800 >>>> >>>> # Enable IPv6 addresses. >>>> webcontrol_ipv6 off >>>> >>>> # Restrict webcontrol connections to the localhost. >>>> webcontrol_localhost off >>>> >>>> # Type of configuration options to allow via >>>> the webcontrol. >>>> webcontrol_parms 2 >>>> >>>> # Method that webcontrol should use for >>>> interface with user. >>>> webcontrol_interface 0 >>>> >>>> # The authentication method for the webcontrol >>>> webcontrol_auth_method 0 >>>> >>>> # Authentication string for the webcontrol. >>>> Syntax username:password >>>> ; webcontrol_authentication value >>>> >>>> # Use ssl / tls for the webcontrol >>>> webcontrol_tls off >>>> >>>> # Full path and file name of the certificate >>>> file for tls >>>> ; webcontrol_cert value >>>> >>>> # Full path and file name of the key file for tls >>>> ; webcontrol_key value >>>> >>>> # The cross-origin resource sharing (CORS) >>>> header for webcontrol >>>> ; webcontrol_cors_header value >>>> >>>> >>>> ############################################################ >>>> # Live stream configuration parameters >>>> >>>> ############################################################ >>>> >>>> # The port number for the live stream. >>>> stream_port 8081 >>>> >>>> # The port number for the live substream >>>> substream_port 0 >>>> >>>> # Restrict stream connections to the localhost. >>>> stream_localhost off >>>> >>>> # Authentication method for live stream. >>>> stream_auth_method 0 >>>> >>>> # The authentication string for the stream. >>>> Syntax username:password >>>> ; stream_authentication value >>>> >>>> # Use ssl / tls for stream. >>>> stream_tls off >>>> >>>> # The cross-origin resource sharing (CORS) >>>> header for the stream >>>> ; stream_cors_header value >>>> >>>> # Percentage to scale the stream image on the >>>> webcontrol. >>>> stream_preview_scale 25 >>>> >>>> # Have the stream image start on a new line of >>>> the webcontrol >>>> stream_preview_newline off >>>> >>>> # Method for showing stream on webcontrol. >>>> stream_preview_method 0 >>>> >>>> # Quality of the jpeg images produced for stream. >>>> stream_quality 50 >>>> >>>> # Provide the stream images in black and white >>>> stream_grey off >>>> >>>> # Output frames at 1 fps when no motion is >>>> detected. >>>> stream_motion off >>>> >>>> # Maximum framerate of images provided for stream >>>> stream_maxrate 1 >>>> >>>> # Limit the number of images per connection >>>> stream_limit 0 >>>> >>>> >>>> ############################################################ >>>> # Database and SQL Configuration parameters >>>> >>>> ############################################################ >>>> >>>> # The type of database being used if any. >>>> database_type mysql >>>> >>>> # Database name to use. For sqlite3, the full >>>> path and name. >>>> database_dbname cameras >>>> >>>> # The host on which the database is located >>>> database_host localhost >>>> >>>> # Port used by the database. >>>> database_port 3306 >>>> >>>> # User account name for database. >>>> database_user <redacted> >>>> >>>> # User password for database. >>>> database_password <redacted> >>>> >>>> # Database wait for unlock time >>>> database_busy_timeout 5 >>>> >>>> # Log to the database when creating motion >>>> triggered image file >>>> sql_log_picture off >>>> >>>> # Log to the database when creating a snapshot >>>> image file >>>> sql_log_snapshot off >>>> >>>> # Log to the database when creating motion >>>> triggered movie file >>>> sql_log_movie on >>>> >>>> # Log to the database when creating timelapse >>>> movie file >>>> sql_log_timelapse off >>>> >>>> # SQL query at event start.? See motion_guide.html >>>> ; sql_query_start value >>>> >>>> # SQL query at event stop.? See motion_guide.html >>>> sql_query_stop INSERT INTO events >>>> >>>> (server_number,camera_number,event_number,event_date,video_length,filename) >>>> VALUES (1,%t,%v,{ts '%C'},null,'%f'); >>>> >>>> # SQL query string that is sent to the >>>> database.? See motion_guide.html >>>> ; sql_query >>>> >>>> >>>> ############################################################ >>>> # Tracking configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Method used by tracking camera. See >>>> motion_guide.html >>>> track_type 0 >>>> >>>> # Enable auto tracking >>>> track_auto off >>>> >>>> # Serial port of motor >>>> ; track_port value >>>> >>>> # Motor number for x-axis >>>> track_motorx 0 >>>> >>>> # Set motorx reverse >>>> track_motorx_reverse off >>>> >>>> # Motor number for y-axis >>>> track_motory 0 >>>> >>>> # Set motory reverse >>>> track_motory_reverse off >>>> >>>> # Maximum value on x-axis >>>> track_maxx 0 >>>> >>>> # Minimum value on x-axis >>>> track_minx 0 >>>> >>>> # Maximum value on y-axis >>>> track_maxy 0 >>>> >>>> # Minimum value on y-axis >>>> track_miny 0 >>>> >>>> # Center value on x-axis >>>> track_homex 128 >>>> >>>> # Center value on y-axis >>>> track_homey 128 >>>> >>>> # ID of an iomojo camera if used >>>> track_iomojo_id 0 >>>> >>>> # Angle in degrees the camera moves per step on >>>> the X-axis with auto-track >>>> track_step_angle_x 10 >>>> >>>> # Angle in degrees the camera moves per step on >>>> the Y-axis with auto-track. >>>> track_step_angle_y 10 >>>> >>>> # Delay to wait for after tracking movement as >>>> number of picture frames. >>>> track_move_wait 10 >>>> >>>> # Speed to set the motor to (stepper motor option) >>>> track_speed 255 >>>> >>>> # Number of steps to make (stepper motor option) >>>> track_stepsize 40 >>>> >>>> # Command to execute to move a camera in >>>> generic tracking mode >>>> ; track_generic_move value >>>> >>>> >>>> ############################################################## >>>> # Camera config files - One for each camera. >>>> >>>> ############################################################## >>>> camera /usr/local/etc/motion/cameraPatio.conf >>>> camera /usr/local/etc/motion/cameraShop.conf >>>> camera /usr/local/etc/motion/cameraPumpHouse.conf >>>> camera /usr/local/etc/motion/cameraBackYard.conf >>>> camera /usr/local/etc/motion/cameraPumpYard.conf >>>> camera /usr/local/etc/motion/cameraShed.conf >>>> camera /usr/local/etc/motion/cameraGate.conf >>>> >>>> >>>> ############################################################## >>>> # Directory to read '.conf' files for cameras. >>>> >>>> ############################################################## >>>> ; camera_dir /etc/motion/conf.d >>>> >>>> >>>> >>>> This is the /cameraPatio.conf/ file. The other >>>> files are very similar. >>>> >>>> # /usr/local/etc/motion/cameraPatio.conf >>>> # >>>> # This config file was generated by motion >>>> 4.1.1+git20181002-062a328 >>>> # at 2021-06-08T17:01:40 >>>> >>>> >>>> # User defined name for the camera. >>>> camera_name patio >>>> >>>> # Target directory for pictures, snapshots and >>>> movies >>>> target_dir /var/www/html/cams/patio >>>> >>>> # The full URL of the network camera stream. >>>> netcam_url >>>> http://10.10.6.181:8181/videostream.cgi?user= >>>> >>>> <http://10.10.6.181:8181/videostream.cgi?user=><redacted>&pwd= >>>> >>>> # The method for keep-alive of network socket >>>> for mjpeg streams. >>>> netcam_keepalive off >>>> >>>> # Text to be overlayed in the lower left corner >>>> of images >>>> text_left Patio >>>> >>>> # Threshold for number of changed pixels that >>>> triggers motion. >>>> threshold 1000 >>>> >>>> # Enable tuning of the threshold down if possible. >>>> threshold_tune on >>>> >>>> # Full path and file name for motion detection >>>> mask PGM file. >>>> mask_file /usr/local/etc/motion/patioMask.pgm >>>> >>>> >>>> ############################################################ >>>> # Webcontrol configuration parameters >>>> >>>> ############################################################ >>>> >>>> # Port number used for the webcontrol. >>>> webcontrol_port 0 >>>> >>>> >>>> ############################################################ >>>> # Live stream configuration parameters >>>> >>>> ############################################################ >>>> >>>> # The port number for the live stream. >>>> stream_port 1801 >>>> >>>> Let me know if you need any other info. >>>> >>>> David >>>> >>>> >>>> On 8/13/21 6:31 AM, tosiara wrote: >>>>> Could you send me your exact motion config and mysql >>>>> command output: >>>>> "describe events;" >>>>> I will try to check >>>>> >>>>> On Thu, Jul 29, 2021 at 8:45 PM Shawn >>>>> Ashe<dracutfo...@gmail.com> <mailto:dracutfo...@gmail.com> wrote: >>>>>> I would find a way to log it, at least it's a >>>>>> symptom you can give to the motion team, and maybe something will become >>>>>> obvious to you >>>>>> >>>>>> On Thu, Jul 29, 2021, 1:05 PM David >>>>>> Powell<da...@depowell.com> <mailto:da...@depowell.com> wrote: >>>>>>> It's the %v replaceable parameter in the insert >>>>>>> statement. Motion generates it internally. >>>>>>> dp >>>>>>> >>>>>>> On July 29, 2021 11:26:25 AM Shawn >>>>>>> Ashe<dracutfo...@gmail.com> <mailto:dracutfo...@gmail.com> wrote: >>>>>>>> is the event_number a counter,or based on time/etc? >>>>>>>> >>>>>>>> Could be the events are going off to fast and you >>>>>>>> are getting duplicate event numbers. >>>>>>>> >>>>>>>> On Thu, Jul 29, 2021 at 12:15 PM David >>>>>>>> Powell<da...@depowell.com> <mailto:da...@depowell.com> wrote: >>>>>>>>> Oh, I understand your question better now. The >>>>>>>>> event number is generated by Motion automatically. >>>>>>>>> >>>>>>>>> David >>>>>>>>> >>>>>>>>> On July 29, 2021 11:11:01 AM David >>>>>>>>> Powell<da...@depowell.com> <mailto:da...@depowell.com> wrote: >>>>>>>>>> My understanding is that event_number is there >>>>>>>>>> for this very purpose - to make each event unique. I can't imagine >>>>>>>>>> another reason to have it. >>>>>>>>>> >>>>>>>>>> David >>>>>>>>>> >>>>>>>>>> On July 29, 2021 10:46:33 >>>>>>>>>> ammotionl...@frontdesign.com <mailto:motionl...@frontdesign.com> >>>>>>>>>> wrote: >>>>>>>>>>> Hi. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Also; "The primary key for the events table is >>>>>>>>>>> server_number,event_number,event_date, and camera_number." >>>>>>>>>>> >>>>>>>>>>> So, can the server_number, event_number, >>>>>>>>>>> event_date and camera_number be the same twice? >>>>>>>>>>> >>>>>>>>>>> I'm guessing server_number for sure, >>>>>>>>>>> camera_number too. Event date? Yeah possible if it's two events in >>>>>>>>>>> tight enough sequence and sloppy enough datetime datatype. >>>>>>>>>>> >>>>>>>>>>> event_number? ... doesn't sound likely but... >>>>>>>>>>> what do i know - how does that get generated? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Why not use an auto_intrement for primary key >>>>>>>>>>> and have a composite index on those other columns instead? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> //Lars >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2021-07-29 16:59, John L. Poole wrote: >>>>>>>>>>> >>>>>>>>>>> The error message you shared, e.g. trigger of a >>>>>>>>>>> primary key constraint, suggests an error in program design. If >>>>>>>>>>> you have a table with unique constraints, e.g. every entry must be >>>>>>>>>>> unique, you don't try to insert the same record twice. >>>>>>>>>>> >>>>>>>>>>> I recommend you file a bug so everything is >>>>>>>>>>> documented well and then the developers can determine why they are >>>>>>>>>>> attempting to insert something already present, or at least testing >>>>>>>>>>> for presence before attempting to insert a record that may already >>>>>>>>>>> exist. >>>>>>>>>>> >>>>>>>>>>> On 7/29/2021 7:27 AM, David Powell wrote: >>>>>>>>>>> >>>>>>>>>>> This is the whole SQL section of motion.conf: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ############################################################ >>>>>>>>>>> # Database and SQL Configuration parameters >>>>>>>>>>> >>>>>>>>>>> ############################################################ >>>>>>>>>>> >>>>>>>>>>> # The type of database being used if any. >>>>>>>>>>> database_type mysql >>>>>>>>>>> >>>>>>>>>>> # Database name to use. For sqlite3, the full >>>>>>>>>>> path and name. >>>>>>>>>>> database_dbname cameras >>>>>>>>>>> >>>>>>>>>>> # The host on which the database is located >>>>>>>>>>> database_host localhost >>>>>>>>>>> >>>>>>>>>>> # Port used by the database. >>>>>>>>>>> database_port 3306 >>>>>>>>>>> >>>>>>>>>>> # User account name for database. >>>>>>>>>>> database_user <redacted> >>>>>>>>>>> >>>>>>>>>>> # User password for database. >>>>>>>>>>> database_password <redacted> >>>>>>>>>>> >>>>>>>>>>> # Database wait for unlock time >>>>>>>>>>> database_busy_timeout 5 >>>>>>>>>>> >>>>>>>>>>> # Log to the database when creating motion >>>>>>>>>>> triggered image file >>>>>>>>>>> sql_log_picture off >>>>>>>>>>> >>>>>>>>>>> # Log to the database when creating a snapshot >>>>>>>>>>> image file >>>>>>>>>>> sql_log_snapshot off >>>>>>>>>>> >>>>>>>>>>> # Log to the database when creating motion >>>>>>>>>>> triggered movie file >>>>>>>>>>> sql_log_movie on >>>>>>>>>>> >>>>>>>>>>> # Log to the database when creating timelapse >>>>>>>>>>> movie file >>>>>>>>>>> sql_log_timelapse off >>>>>>>>>>> >>>>>>>>>>> # SQL query at event start. See >>>>>>>>>>> motion_guide.html >>>>>>>>>>> ; sql_query_start value >>>>>>>>>>> >>>>>>>>>>> # SQL query at event stop. See >>>>>>>>>>> motion_guide.html >>>>>>>>>>> sql_query_stop INSERT INTO events >>>>>>>>>>> (server_number,camera_number,event_number,event_date,video_length,filename) >>>>>>>>>>> VALUES (1,%t,%v,{ts '%C'},null,'%f'); >>>>>>>>>>> >>>>>>>>>>> # SQL query string that is sent to the >>>>>>>>>>> database. See motion_guide.html >>>>>>>>>>> ; sql_query >>>>>>>>>>> >>>>>>>>>>> I had the query in sql_query but I moved it to >>>>>>>>>>> sql_query_stop. That didn't help. >>>>>>>>>>> >>>>>>>>>>> David >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 7/29/21 8:17 AM, Damian via Motion-user >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> The SQL statement in motion.conf is >>>>>>>>>>> INSERT INTO events >>>>>>>>>>> (server_number,camera_number,event_number,event_date,video_length,filename) >>>>>>>>>>> VALUES (1,%t,%v,{ts '%C'},null,'%f'); >>>>>>>>>>> >>>>>>>>>>> The records /are/ there in the database, and I >>>>>>>>>>> run a custom program to extract them for displaying the snapshots >>>>>>>>>>> and movies in a web page >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Which sql_log_* statements are enabled? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Motion-user mailing list >>>>>>>>>>> Motion-user@lists.sourceforge.net >>>>>>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>>>>>> >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>>>>>> https://motion-project.github.io/ >>>>>>>>>>> <https://motion-project.github.io/> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Motion-user mailing list >>>>>>>>>>> Motion-user@lists.sourceforge.net >>>>>>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>>>>>> >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>>>>>> https://motion-project.github.io/ >>>>>>>>>>> <https://motion-project.github.io/> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> >>>>>>>>>>> John Laurence Poole >>>>>>>>>>> 1566 Court ST NE >>>>>>>>>>> Salem OR 97301-4241 >>>>>>>>>>> 707-812-1323 office >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Motion-user mailing list >>>>>>>>>>> Motion-user@lists.sourceforge.net >>>>>>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>>>>>> >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>>>>>> https://motion-project.github.io/ >>>>>>>>>>> <https://motion-project.github.io/> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Motion-user mailing list >>>>>>>>>>> Motion-user@lists.sourceforge.net >>>>>>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>>>>>> >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>>>>>> https://motion-project.github.io/ >>>>>>>>>>> <https://motion-project.github.io/> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>>>>> _______________________________________________ >>>>>>>>> Motion-user mailing list >>>>>>>>> Motion-user@lists.sourceforge.net >>>>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>>>> >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>>>> https://motion-project.github.io/ >>>>>>>>> <https://motion-project.github.io/> >>>>>>>>> >>>>>>>>> >>>>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>>>> _______________________________________________ >>>>>>>> Motion-user mailing list >>>>>>>> Motion-user@lists.sourceforge.net >>>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>>> >>>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>>> https://motion-project.github.io/ >>>>>>>> <https://motion-project.github.io/> >>>>>>>> >>>>>>>> >>>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>>> _______________________________________________ >>>>>>> Motion-user mailing list >>>>>>> Motion-user@lists.sourceforge.net >>>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>>> >>>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>>> https://motion-project.github.io/ >>>>>>> <https://motion-project.github.io/> >>>>>>> >>>>>>> >>>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>>> _______________________________________________ >>>>>> Motion-user mailing list >>>>>> Motion-user@lists.sourceforge.net >>>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>>> >>>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>>> https://motion-project.github.io/ >>>>>> <https://motion-project.github.io/> >>>>>> >>>>>> >>>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>>> _______________________________________________ >>>>> Motion-user mailing list >>>>> Motion-user@lists.sourceforge.net >>>>> <mailto:Motion-user@lists.sourceforge.net> >>>>> >>>>> https://lists.sourceforge.net/lists/listinfo/motion-user >>>>> <https://lists.sourceforge.net/lists/listinfo/motion-user> >>>>> https://motion-project.github.io/ >>>>> <https://motion-project.github.io/> >>>>> >>>>> >>>>> Unsubscribe:https://lists.sourceforge.net/lists/options/motion-user >>>>> <https://lists.sourceforge.net/lists/options/motion-user> >>>> >>> -------------- next part -------------- An HTML attachment was scrubbed... ------------------------------ ------------------------------ Subject: Digest Footer _______________________________________________ Motion-user mailing list Motion-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/motion-user ------------------------------ End of Motion-user Digest, Vol 182, Issue 34 ********************************************