Hi all,
I'm developing a pipeline for using OrthoMCL and I can't get around an error that occurs when running OrthoMCLPairs:
DBD::mysql::st execute failed: Table 'BestQueryTaxonScore' already exists at /home/user/software/orthoMCL/bin/orthomclPairs line 709, <f> line 14.
I went to check line 709 in orthomclPairs, which really didn't tell me much why the error occurs.
When the pipeline is run one row at a time, this error isn't raised and therefore this makes no sense to me. The orthomcl.config is unique for each run, meaning that my SimiliarSequencesTable will be unique.
This is basically the source code from where the error occurs:
Install schema in MySQL: (cd $dir/my_orthomcl_dir && /home/user/software/orthoMCL/bin/orthomclInstallSchema "orthomcl_LK.config")
Load BLAST: (cd $dir/my_orthomcl_dir && time /home/user/software/orthoMCL/bin/orthomclLoadBlast "orthomcl_LK.config" "similarSequences_LK_test_5.txt")
Find pairs: (cd $dir/my_orthomcl_dir && time /home/user/software/orthoMCL/bin/orthomclPairs "orthomcl_LK.config" "pairs_LK_paramOAD.log" cleanup=yes)
Anyone else that has encountered this error?
The error indicates that the program is trying to create a MySQL table that already exists. This can happen when the same command runs twice, maybe the table was created in a previous run. Just drop the table (or the whole database) and start again. To avoid this, the code should probably run DROP TABLE ... IF EXISTS before trying to create the table.
This is correct - OrthoMCL expects a "clean" and empty database after orthoMCLInstallSchema, so in between runs it's easiest to run "DROP DATABASE orthomcl;", "CREATE DATABASE orthomcl," inside the mysql command line and then to do orthoMCLinstallSchema again
Yes I've thought of that too, but according to my supervisor the OrthoMCL database where I run the pipeline is used by several computers in the department, and therefore I'm not really sure that it should/can be removed. When the commands is run separately, this problem doesn't occur which feels like that the existence of the database cannot be the problem. The same goes for the table. But maybe it should be removed, which feels like the only reason and solution to the problem!
Cheers!
Hi,
Do you know how to troubleshoot this error from orthomclLoadBlast?
This tells you that you're trying to insert data that is longer than the specified length of the field. Check what is the data type and size of the column SUBJECT_ID and either change its size or make sure that your data is always smaller. Alternatively if you can accept truncation of your data, make the error go away by disabling MySQL strict mode (not recommended anyway).
Hi Karin, An error prompt in my run in orthomclDumpPairsFiles
Do you know how to solve this? Thanks!
This error means one of two things: either you're running out of disk space or you're running out of inodes. This usually happens when some processes don't clean up temporary files after themselves and the system accumulates lots of files over time either eating up all available space or eating up all available inodes (e.g. with lots of small files).
Thanks for the reply. But can you share to me the steps to troubleshoot it?
On the affected filesystem, start with checking the available space with: df -h . If there's still space left, there are two possibilities: either you're filling up all the remaining space when running your pipeline (MySQL creates temporary files that can be large) and that's been cleaned up or you're running out of inodes and you'll have to find where the unwanted files are. Most likely they are in temporary directories like /tmp. Monitor the available space while running your pipeline and see if it is getting full. Also on some systems, a reboot clears tmp directories and some caches so that's worth a try.
Doing df -h gives me tmpfs avail ~1.9G. In line with this, I am wondering if I can change the writing of the files from /tmp/MY40oycE to other folder? I had this folder with 613G available so I change the tmpdir of mysqld.cnf into its path. Apparently, when i restart mysql to take effect the change I made I got this error:
I would also try to reboot to try my luck. How to do the rebooting? Im just new to this so Im sorry if im asking too many question. Thanks.
tmpfs is irrelevant, you want data fro the affected filesystem, i.e. the one you're running things one, most likely the one where /tmp is located. So assuming the current directory is on the affected filesystem, you should run:
Notice the dot. Or list all output of df -h (i.e. without the dot). Rebooting is done either by using the shutdown/restart menu or by pressing the power button on the computer. If you're accessing the machine via a terminal, you can run:
It would be easier and more efficient if you could find someone knowledgeable near you. Also there are other places dedicated to this type of problems such as Unix & Linux StackExchange or StackOverflow.
Dear Jean, I am having the same problem with memory. I ran orthoMCL-pipeline to run orthoMCL in an easier way but I have a lot of data and I was following a tutorial so I guess It was my mistake not clearing temporal files. Do you know how I could continue the process without loosing the progress? It took weeks and it's the first time I use orthoMCL. The problem is in line 627 or OrthoMCL-pipeline: $job_runner->submit_job($pairsbin, $param_keys, $param_values, "$ortho_log.stdout", "$ortho_log.stderr");
And orthomclPairs gives me this mistake: DBD::mysql::st execute failed: Error writing file '/tmp/MLfd=124' (OS errno 28 - No space left on device) at /usr/local/bioconda/bin/orthomclPairs line 709, <f> line 12.
I don't see any temporal files in the output directory or temporal tables in mysql so I don't know what to eliminate.