Troubleshooting of MySQL errors: Difference between revisions

From LemonWiki共筆
Jump to navigation Jump to search
(ERROR 1049 (42000): Unknown database)
(40 intermediate revisions by the same user not shown)
Line 15: Line 15:


Cause:
Cause:
* the error log only be accessed by the mysql user
* the error log only be accessed by the user named {{kbd | key=mysql}}<ref>Open the MySQL configuration file located: /Applications/XAMPP/xamppfiles/etc/my.cnf
<pre>
# The MySQL server
[mysqld]
user = mysql
</pre></ref>


Solution <ref>[http://computerplumber.com/2009/01/using-the-chmod-command-effectively/ Using the CHMOD command effectively @ Computer Plumber]</ref>:
Solution <ref>[http://computerplumber.com/2009/01/using-the-chmod-command-effectively/ Using the CHMOD command effectively @ Computer Plumber]</ref>:
Line 28: Line 33:
</pre>
</pre>


== could not open single-table tablespace file filename.ibd ==
== Could not open single-table tablespace file filename.ibd ==
Version: XAMPP 5.6.15-1 on {{Mac}}
Version: XAMPP 5.6.15-1 on {{Mac}}


Line 39: Line 44:
# If the MySQL service started successfully, edit the MySQL configuration file and mark this line : {{kbd | key=<nowiki>#innodb_force_recovery = 1</nowiki>}}
# If the MySQL service started successfully, edit the MySQL configuration file and mark this line : {{kbd | key=<nowiki>#innodb_force_recovery = 1</nowiki>}}
# Restart the MySQL service
# Restart the MySQL service
== Could not start MySQL service on Windows ==
checklist
# [https://dev.mysql.com/doc/refman/5.7/en/data-directory.html MySQL Data Directory] was allowed to written by {{kbd | key=NETWORK SERVICE}} on Windows Server 2008<ref>[https://errerrors.blogspot.com/2016/12/mysql-windows-server-2008-r2.html 如何修改 MySQL 伺服器的資料目錄 (Windows Server 2008 R2)]</ref>
# Directory {{kbd | key=secure-file-priv}} was allowed to written by {{kbd | key=NETWORK SERVICE}} on Windows Server 2008
== MySQL server has gone away ==
steps
* Enable the option {{kbd | key = log_error}} in MySQL config file e.g. {{kbd | key = <nowiki>log_error="file_name_of_error_log"</nowiki>}}<ref>[https://dev.mysql.com/doc/refman/8.0/en/error-log.html MySQL :: MySQL 8.0 Reference Manual :: 5.4.2 The Error Log]</ref>.
* Example error log located at {{kbd | key = <nowiki>file_name_of_error_log</nowiki>}} are as following:
<pre>
2019-05-23T08:52:19.989876Z 99980 [Note] Aborted connection 99980 to db: 'DB_NAME' user: 'DB_USER' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)
</pre>
* Increase the value of {{kbd | key = <nowiki>max_allowed_packet</nowiki>}}<ref>[https://stackoverflow.com/questions/5688403/how-to-check-and-set-max-allowed-packet-mysql-variable php - how to check and set max_allowed_packet mysql variable - Stack Overflow]</ref> if the MySQL user has the {{kbd | key = <nowiki>SUPER</nowiki>}} privilege<ref>[https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html MySQL :: MySQL 8.0 Reference Manual :: 6.2.2 Privileges Provided by MySQL]</ref>.


== Caught exception: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined ==
== Caught exception: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined ==
Line 44: Line 67:
* Number of question marks is not matched with the number of query values <ref>[https://stackoverflow.com/questions/10966251/sqlstatehy093-invalid-parameter-number-parameter-was-not-defined php Invalid parameter number: parameter was not defined - Stack Overflow]</ref>
* Number of question marks is not matched with the number of query values <ref>[https://stackoverflow.com/questions/10966251/sqlstatehy093-invalid-parameter-number-parameter-was-not-defined php Invalid parameter number: parameter was not defined - Stack Overflow]</ref>
* The array of query values should not be the associative array. Use sequential array!
* The array of query values should not be the associative array. Use sequential array!
== Error!: SQLSTATE[HY000]: General error ==
Message: Error!: SQLSTATE[HY000]: General error
Condition: When I used the [http://php.net/manual/en/book.pdo.php PHP: PDO]
Solutions:
* "You do not use {{kbd | key=<nowiki>$result = $stmt->fetchAll();</nowiki>}} with update or insert queries" <ref>[https://stackoverflow.com/questions/12979510/pdo-error-sqlstatehy000-general-error-when-updating-database php - PDO error: " SQLSTATE[HY000]: General error " When updating database - Stack Overflow]</ref>.
* You do not use {{kbd | key=<nowiki>$result = $stmt->fetchAll();</nowiki>}} in the query {{kbd | key=<nowiki>INTO OUTFILE ...</nowiki>}} <ref>[http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/ Save MySQL query results into a text or CSV file]</ref><ref>[https://stackoverflow.com/questions/13369164/cant-create-write-to-file-errcode-22 mysql - Can't create/write to file (Errcode: 22) - Stack Overflow]</ref>.
== ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode ==
Message: {{kbd | key=<nowiki>ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.</nowiki>}}
Condition: When I import the sql file and I met the above error message.
Solution: Unzip the file and then import the file again <ref>[https://stackoverflow.com/questions/17158367/enable-binary-mode-while-restoring-a-database-from-an-sql-dump mysql - Enable binary mode while restoring a Database from an SQL dump - Stack Overflow]</ref>. The sql file is a compressed file. You may use [https://en.wikipedia.org/wiki/File_(command) file (command)] for recognizing the type of file.
<pre>
$ file compressed.sql
compressed.sql: gzip compressed data
$ file plain_text.sql
plain_text.sql: UTF-8 Unicode text, with very long lines
</pre>
== Errcode: 13 Permission denied ==
The message occurred after executed {{kbd | key=<nowiki>mysqld.exe --datadir=..\data --console</nowiki>}} when I tried to start the service. (Version of MySQL:5.5.5-10.0.12-MariaDB on {{Win}})
<pre>
> mysqld.exe --datadir=..\data --console
180430 10:33:38 [ERROR] mysqld.exe: File 'C:\MariaDB_10.0\bin\..\data\aria_log_control' not found (Errcode: 13 "Permission denied")
180430 10:33:38 [ERROR] mysqld.exe: Got error 'Can't open file' when trying to use aria control file 'C:\MariaDB_10.0\bin\..\data\aria_log_control'
180430 10:33:38 [ERROR] Plugin 'Aria' init function returned error.
180430 10:33:38 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
180430 10:33:38 [Note] InnoDB: Using mutexes to ref count buffer pool pages
180430 10:33:38 [Note] InnoDB: The InnoDB memory heap is disabled
180430 10:33:38 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
180430 10:33:38 [Note] InnoDB: Compressed tables use zlib 1.2.3
180430 10:33:38 [Note] InnoDB: Not using CPU crc32 instructions
180430 10:33:38 [Note] InnoDB: Initializing buffer pool, size = 4.0G
180430 10:33:38 [Note] InnoDB: Completed initialization of buffer pool
180430 10:33:38 [ERROR] InnoDB: .\ibdata1 can't be opened in read-write mode
180430 10:33:38 [ERROR] InnoDB: The system tablespace must be writable!
180430 10:33:38 [ERROR] Plugin 'InnoDB' init function returned error.
180430 10:33:38 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
180430 10:33:38 [Note] Plugin 'FEEDBACK' is disabled.
180430 10:33:38 [ERROR] Unknown/unsupported storage engine: innodb
180430 10:33:38 [ERROR] Aborting
180430 10:33:38 [Note] mysqld.exe: Shutdown complete
</pre>
Solutions:
Open the command line with administrative privileges. (How to: [https://www.howtogeek.com/194041/how-to-open-the-command-prompt-as-administrator-in-windows-8.1/ How to Open the Command Prompt as Administrator in Windows 8 or 10])
== Error!: SQLSTATE[HY000]: General error: 3 Error writing file 'xxx\Temp\xxx.tmp' (Errcode: 28 - No space left on device) ==
Example error message: Error!: SQLSTATE[HY000]: General error: 3 Error writing file 'C:\Windows\SERVIC~2\NETWOR~1\AppData\Local\Temp\MY2713.tmp' (Errcode: 28 - No space left on device)
Condition: Check the disk free space of mysql {{kbd | key=tmpdir}} folder
Solutions: Increase the free space of mysql {{kbd | key=tmpdir}} folder. Or change the mysql {{kbd | key=tmpdir}} folder with another hard disk drive contains more free space<ref>[https://stackoverflow.com/questions/11990887/changing-the-tmp-folder-of-mysql Changing the tmp folder of mysql - Stack Overflow]</ref>.
* Check the current mysql {{kbd | key=tmpdir}} folder. Query the syntax {{kbd | key=<nowiki>SHOW VARIABLES LIKE 'tmpdir';</nowiki>}}.
** On {{Win}} the default temporary folder<ref>[https://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/where-is-the-temporary-folder/44a039a5-45ba-48dd-84db-fd700e54fd56 Where is the Temporary folder? - Microsoft Community]</ref> is {{kbd | key=<nowiki>%TMP%</nowiki>}} = {{kbd | key=<nowiki>%USERPROFILE%\AppData\Local\Temp</nowiki>}}.
** On {{Linux}} the default temporary folder maybe is {{kbd | key=<nowiki>/tmp</nowiki>}}
* Edit the [https://dev.mysql.com/doc/refman/5.7/en/option-files.html mysql configuration file]
<pre>
[mysqld]
tmpdir=X:/temp
</pre>
* Restart the MySQL service
Validation
* Query the syntax {{kbd | key=<nowiki>SHOW VARIABLES LIKE 'tmpdir';</nowiki>}} to validate the modification of mysql configuration file.
== errno 41 - Error dropping database ==
Message: '''Error dropping database (can't rmdir '.\TABLE_NAME', errno: 41)''' occurred when I executed '''DROP DATABASE `TABLE_NAME`''';
Solution: [https://stackoverflow.com/questions/17947255/error-in-dropping-a-database-in-mysql-cant-rmdir-oro-errno-41/19888293 phpmyadmin - Error in dropping a database in MySQL (can't rmdir '.\oro', errno: 41) - Stack Overflow]


== ERROR 1005 (HY000) at line xx: Can't create table 'TABLE_NAME' (errno: 28) ==
== ERROR 1005 (HY000) at line xx: Can't create table 'TABLE_NAME' (errno: 28) ==
Line 65: Line 169:


== ERROR 1044 (42000): Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME' ==
== ERROR 1044 (42000): Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME' ==
Message:
Message: {{kbd | key=<nowiki>ERROR 1044 (42000): Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME'</nowiki>}}
<pre>
<pre>
pv file.sql.gz | gunzip | mysql -u USER -p --host=127.0.0.1 --default_character_set utf8 DATABASE_NAME
pv file.sql.gz | gunzip | mysql -u USER -p --host=127.0.0.1 --default_character_set utf8 DATABASE_NAME
ERROR 1044 (42000): Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME'
</pre>
</pre>


Line 80: Line 183:
</pre>
</pre>


== ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES) ==
Message: {{kbd | key=<nowiki>mysqldump: Got error: 1044: Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME' when doing LOCK TABLES</nowiki>}}
<pre>
$ mysqldump -h 127.0.0.1 -u USER -p DATABASE_NAME TABLE_NAME > TABLE_NAME.sql
</pre>
 
Solution:
* Add the mysqldump option {{kbd | key=<nowiki>--skip-lock-tables</nowiki>}} if you cannot grant the user permissions <ref>[https://stackoverflow.com/questions/7415698/skip-lock-tables-and-mysqldump mysql - skip-lock-tables and mysqldump - Stack Overflow]</ref>.
<pre>
$ mysqldump -h 127.0.0.1 -u USER -p --skip-lock-tables DATABASE_NAME TABLE_NAME > TABLE_NAME.sql
</pre>
 
== ERROR 1045 (28000): Access denied for user ==
Message: ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)
 
Solution:
Solution:
* Check the typo of user name.
* Check the typo of user name.
Line 86: Line 202:
* If you are using the console command, escape the password if it contains special characters e.g. {{kbd | key=<nowiki>mysql -u root -p'PASSWORD'</nowiki>}}<ref>[http://superuser.com/questions/123928/escaping-a-password-using-mysqldump-console escape characters - Escaping a password using mysqldump console - Super User]</ref>
* If you are using the console command, escape the password if it contains special characters e.g. {{kbd | key=<nowiki>mysql -u root -p'PASSWORD'</nowiki>}}<ref>[http://superuser.com/questions/123928/escaping-a-password-using-mysqldump-console escape characters - Escaping a password using mysqldump console - Super User]</ref>
* You may need to delete the existing account setting and re-config again.
* You may need to delete the existing account setting and re-config again.
== ERROR 1049 (42000): Unknown database ==
Message: ERROR 1049 (42000): Unknown database 'MY_DATABASE_p'
Solution:
* Check the database 'MY_DATABASE_p' is exists
* Check there are no {{kbd | key=TAB}} character after database name if you want to connect the database 'MY_DATABASE' when you are using console.
== Error!: SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied ==
Message: Error!: {{kbd | key=<nowiki>SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied for user 'user'@'localhost' (using password: YES)</nowiki>}}
Solution:
* If you executed the query{{kbd | key=INTO OUTFILE}}, you need to grant the file permission e.g. {{kbd | key=GRANT FILE ON *.* TO 'user'@'localhost';}}<ref>[https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_file MySQL :: MySQL 5.7 Reference Manual :: 6.2.1 Privileges Provided by MySQL]</ref><ref>[https://stackoverflow.com/questions/6091427/mysql-into-outfile-access-denied-but-my-user-has-all-access-and-the-fold MYSQL into outfile "access denied" - but my user has "ALL" access.. and the folder is CHMOD 777 - Stack Overflow]</ref>.
Related issue: "Error!: SQLSTATE[HY000]: General error: 1290 The MySQL server is running with the --secure-file-priv option so it cannot execute this statement"<ref>[https://stackoverflow.com/questions/32737478/how-should-i-tackle-secure-file-priv-in-mysql database - How should I tackle --secure-file-priv in MySQL? - Stack Overflow]</ref>
== Error!: SQLSTATE[42000]: Syntax error or access violation ==
Message: {{kbd | key=<nowiki>Error!: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ...</nowiki>}}
Solution:
* [[SQL syntax debug]]
* [https://www.eversql.com/sql-syntax-check-validator/ SQL Syntax Check Online, SQL Validator, Instant SQL Compiler Online – EverSQL] {{exclaim}} Not support the [https://www.php.net/manual/en/pdo.prepare.php PHP: PDO::prepare] which the query syntax contains question marks.
== ERROR 1052 - Column 'column_name' in field list is ambiguous ==
Message: Error Code: 1052. Column 'column_name' in field list is ambiguous
Cause: Since 'column_name' is present in 2 or more tables ...<ref>[https://stackoverflow.com/questions/19351633/error-code-1052-column-admin-id-in-field-list-is-ambiguous mysql - Error Code: 1052 Column 'admin_id' in field list is ambiguous - Stack Overflow]</ref>
Solution: Remain only one table name 'column_name' OR adding the table name alias.


== ERROR 1054 - Unknown column in 'where clause' ==
== ERROR 1054 - Unknown column in 'where clause' ==
Line 115: Line 261:
) final
) final
WHERE final.rank <= 10
WHERE final.rank <= 10
</pre>
== ERROR 1690 - BIGINT UNSIGNED value is out of range ==
Message: MySQL error #1690 (BIGINT UNSIGNED value is out of range)
Solution <ref>[https://dev.mysql.com/doc/refman/8.0/en/out-of-range-and-overflow.html MySQL :: MySQL 8.0 Reference Manual :: 11.2.6 Out-of-Range and Overflow Handling]</ref><ref>[https://stackoverflow.com/questions/34115917/mysql-error-1690-bigint-unsigned-value-is-out-of-range-for-unix-timestamp MySQL error #1690 (BIGINT UNSIGNED value is out of range) for UNIX_TIMESTAMP() - Stack Overflow]</ref>:
<pre>
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
</pre>
</pre>


== ERROR 1114 (HY000): The table `TABLE_NAME` is full ==
== ERROR 1114 (HY000): The table `TABLE_NAME` is full ==
Possible solution
Possible solution
* Because the partition is full or almost full, free some hard-disk space<ref>[http://stackoverflow.com/questions/730579/error-1114-hy000-the-table-is-full mysql - ERROR 1114 (HY000): The table is full - Stack Overflow]</ref>.
* Because the hard disk of partition where [https://dev.mysql.com/doc/refman/5.7/en/data-directory.html MySQL Data Directory] located is full or almost full, free some hard disk space<ref>[http://stackoverflow.com/questions/730579/error-1114-hy000-the-table-is-full mysql - ERROR 1114 (HY000): The table is full - Stack Overflow]</ref>.


== ERROR 1205: Lock wait timeout exceeded; try restarting transaction ==
== ERROR 1205: Lock wait timeout exceeded; try restarting transaction ==
Line 138: Line 276:
Message: Error Code: 1206. The total number of locks exceeds the lock table size
Message: Error Code: 1206. The total number of locks exceeds the lock table size


Solution: Increase {{kbd | key = innodb_buffer_pool_size}} e.g. [http://stackoverflow.com/questions/5696857/how-to-change-value-for-innodb-buffer-pool-size-in-mysql-on-mac-os innodb - How to change value for innodb_buffer_pool_size in MySQL on Mac OS? - Stack Overflow].
Current condition<ref>[https://dev.mysql.com/doc/refman/8.0/en/show-variables.html MySQL :: MySQL 8.0 Reference Manual :: 13.7.6.39 SHOW VARIABLES Syntax]</ref>:
* Keywin {{kbd | key = <nowiki>SHOW VARIABLES LIKE 'innodb_buffer_pool_size';</nowiki>}}. If it returns {{kbd | key=8388608}}, it means {{kbd | key=8388608}} bytes ≅ 8MB.
 
Solution:  
* Increase {{kbd | key = innodb_buffer_pool_size}} e.g. {{kbd | key =<nowiki>SET GLOBAL innodb_buffer_pool_size=402653184;</nowiki>}} (402653184 bytes ~ 400MB. Default value is 8MB.)
* Reduce the size of query data
 
Further reading:
* [http://stackoverflow.com/questions/5696857/how-to-change-value-for-innodb-buffer-pool-size-in-mysql-on-mac-os innodb - How to change value for innodb_buffer_pool_size in MySQL on Mac OS? - Stack Overflow].
* [https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-resize.html MySQL :: MySQL 5.7 Reference Manual :: 14.6.3.2 Configuring InnoDB Buffer Pool Size]
 
== ERROR 1235: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' ==
Message: ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'.
 
Solution: Change the syntax of subquery to {{kbd | key =column_name BETWEEN start_number to end_number}}
 
Further reading:
* [https://dev.mysql.com/doc/mysql-reslimits-excerpt/5.6/en/subquery-restrictions.html MySQL :: MySQL Restrictions and Limitations :: 4 Restrictions on Subqueries]
 
== ERROR 1267: Illegal mix of collations (utf8mb4_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'concat' ==
Error condition: Tried to concat different type of data e.g. CONCAT(string, int)
 
Solution: {{kbd | key =<nowiki>SELECT CONCAT(`string_column`, CONVERT(`int_column`, CHAR))</nowiki>}} or {{kbd | key =<nowiki>SELECT CONCAT(`string_column`, CAST(`int_column` AS CHAR))</nowiki>}}<ref>[https://stackoverflow.com/questions/15368753/cast-int-to-varchar mysql - Cast int to varchar - Stack Overflow]</ref><ref>[http://blog.51cto.com/bian5399/1092772 mysql字符集问题:Illegal mix of collations-每天让自己进步一点-51CTO博客]</ref>
 
== ERROR 1690 - BIGINT UNSIGNED value is out of range ==
Message: MySQL error #1690 (BIGINT UNSIGNED value is out of range)
 
Solution <ref>[https://dev.mysql.com/doc/refman/8.0/en/out-of-range-and-overflow.html MySQL :: MySQL 8.0 Reference Manual :: 11.2.6 Out-of-Range and Overflow Handling]</ref><ref>[https://stackoverflow.com/questions/34115917/mysql-error-1690-bigint-unsigned-value-is-out-of-range-for-unix-timestamp MySQL error #1690 (BIGINT UNSIGNED value is out of range) for UNIX_TIMESTAMP() - Stack Overflow]</ref>:
<pre>
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
</pre>
 
== ERROR 1813: Tablespace for table xxx exists ==
Message: ERROR 1813 Tablespace for table xxx exists.
 
Solution
* [https://stackoverflow.com/questions/15694168/error-tablespace-for-table-xxx-exists-please-discard-the-tablespace-before-imp mysql - Error: Tablespace for table xxx exists. Please DISCARD the tablespace before IMPORT - Stack Overflow]
 


== ERROR 1827 (HY000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function. ==
== ERROR 1827 (HY000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function. ==
Line 167: Line 342:
* [http://dev.mysql.com/doc/refman/5.7/en/drop-user.html MySQL :: MySQL 5.7 Reference Manual :: 14.7.1.3 DROP USER Syntax]
* [http://dev.mysql.com/doc/refman/5.7/en/drop-user.html MySQL :: MySQL 5.7 Reference Manual :: 14.7.1.3 DROP USER Syntax]


== ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' ==
== ERROR 2002: Cannot connect: SQLSTATE[HY000] [2002] ==
Condition on Cygwin terminal of Windows:
Condition on Cygwin terminal of Windows:
<pre>
<pre>
Line 184: Line 359:
$ mysql -h 127.0.0.1 -u root -p
$ mysql -h 127.0.0.1 -u root -p
</pre>
</pre>
* If still not work, reboot the server and restart the MySQL service.


== ERROR 2003 (HY000): Can't connect to MySQL server on 'ip' ==
== ERROR 2003 (HY000): Can't connect to MySQL server on 'ip' ==
'''ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111 "Connection refused")'''
'''ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' '''
 
Solution:
* Check if the IP is alive
 
'''ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' (111 "Connection refused")'''


Solution:
Solution:
* Check if the MySQL service is running or not<ref>[https://www.cyberciti.biz/faq/how-to-find-out-if-mysql-is-running-on-linux/ HowTo: Find out If MySQL Is Running On Linux Or Not]</ref>. If not, start the MySQL service.
* Check if the MySQL service is running or not<ref>[https://www.cyberciti.biz/faq/how-to-find-out-if-mysql-is-running-on-linux/ HowTo: Find out If MySQL Is Running On Linux Or Not]</ref>. If not, start the MySQL service.
* Check the firewall rules


'''ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' (116 "Connection timed out")'''
'''ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' (116 "Connection timed out")'''
Line 240: Line 422:


== resolve insufficient hard disk space where mysql data located ==
== resolve insufficient hard disk space where mysql data located ==
[http://errerrors.blogspot.tw/2016/07/mysql.html Err: 解決 MySQL 資料庫所在硬碟空間不足的狀況]
[http://errerrors.blogspot.com/2016/07/mysql.html Err: 解決 MySQL 資料庫所在硬碟空間不足的狀況]


== references ==
== References ==
<references/>
<references/>



Revision as of 11:04, 31 May 2019

Troubleshooting of MySQL errors

command not found: mysqldump

  1. locate the mysqldump command
    • sudo find / -iname mysqldump for Mac icon_os_mac.png or Linux Os linux.png
    • If you installed
      • XAMPP for Mac icon_os_mac.png : Entire path is /Applications/XAMPP/xamppfiles/bin/mysqldump
      • XAMPP on X disk for Win Os windows.png : Entire path is X:\xampp\mysql\bin\mysqldump.exe
      • MAMP & MAMP PRO for Mac icon_os_mac.png : Entire path is /Applications/MAMP/Library/bin/mysqldump
  2. input the complete path of mysqldump command
    • old command which caused error mysqldump -h 127.0.0.1 -u root -p --force --single-transaction DATABASE_NAME | pv | gzip -c > DATABASE_NAME.sql.gz
    • new command /Applications/XAMPP/xamppfiles/bin/mysqldump -h 127.0.0.1 -u root -p --force --single-transaction DATABASE_NAME | pv | gzip -c > DATABASE_NAME.sql.gz

could not access the mysql log

Version: XAMPP 5.6.15-1 on Mac icon_os_mac.png

Cause:

  • the error log only be accessed by the user named mysql[1]

Solution [2]:

find the path to the mysql log
$ ls /Applications/XAMPP/xamppfiles/var/mysql/*.local.err

find the file name of mysql log ex: XXXMacBook-Pro.local.err

set the permission of log
$ sudo chmod 774 /Applications/XAMPP/xamppfiles/var/mysql/XXXMacBook-Pro.local.err

Could not open single-table tablespace file filename.ibd

Version: XAMPP 5.6.15-1 on Mac icon_os_mac.png

Condition: The Mac was shutdown accidentally and the database was not shutdown normally. After reboot the Mac, unable to start the MySQL service[3][4].

Possible solution:

  1. Edit the MySQL configuration file located: /Applications/XAMPP/xamppfiles/etc/my.cnf
  2. Add this line: innodb_force_recovery = 1
  3. Try to start the MySQL service
  4. If the MySQL service started successfully, edit the MySQL configuration file and mark this line : #innodb_force_recovery = 1
  5. Restart the MySQL service


Could not start MySQL service on Windows

checklist

  1. MySQL Data Directory was allowed to written by NETWORK SERVICE on Windows Server 2008[5]
  2. Directory secure-file-priv was allowed to written by NETWORK SERVICE on Windows Server 2008


MySQL server has gone away

steps

  • Enable the option log_error in MySQL config file e.g. log_error="file_name_of_error_log"[6].
  • Example error log located at file_name_of_error_log are as following:
2019-05-23T08:52:19.989876Z 99980 [Note] Aborted connection 99980 to db: 'DB_NAME' user: 'DB_USER' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)
  • Increase the value of max_allowed_packet[7] if the MySQL user has the SUPER privilege[8].

Caught exception: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Solutions

  • Number of question marks is not matched with the number of query values [9]
  • The array of query values should not be the associative array. Use sequential array!

Error!: SQLSTATE[HY000]: General error

Message: Error!: SQLSTATE[HY000]: General error

Condition: When I used the PHP: PDO

Solutions:

  • "You do not use $result = $stmt->fetchAll(); with update or insert queries" [10].
  • You do not use $result = $stmt->fetchAll(); in the query INTO OUTFILE ... [11][12].

ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode

Message: ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.

Condition: When I import the sql file and I met the above error message.

Solution: Unzip the file and then import the file again [13]. The sql file is a compressed file. You may use file (command) for recognizing the type of file.

$ file compressed.sql
compressed.sql: gzip compressed data

$ file plain_text.sql
plain_text.sql: UTF-8 Unicode text, with very long lines

Errcode: 13 Permission denied

The message occurred after executed mysqld.exe --datadir=..\data --console when I tried to start the service. (Version of MySQL:5.5.5-10.0.12-MariaDB on Win Os windows.png )

> mysqld.exe --datadir=..\data --console
180430 10:33:38 [ERROR] mysqld.exe: File 'C:\MariaDB_10.0\bin\..\data\aria_log_control' not found (Errcode: 13 "Permission denied")
180430 10:33:38 [ERROR] mysqld.exe: Got error 'Can't open file' when trying to use aria control file 'C:\MariaDB_10.0\bin\..\data\aria_log_control'
180430 10:33:38 [ERROR] Plugin 'Aria' init function returned error.
180430 10:33:38 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
180430 10:33:38 [Note] InnoDB: Using mutexes to ref count buffer pool pages
180430 10:33:38 [Note] InnoDB: The InnoDB memory heap is disabled
180430 10:33:38 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
180430 10:33:38 [Note] InnoDB: Compressed tables use zlib 1.2.3
180430 10:33:38 [Note] InnoDB: Not using CPU crc32 instructions
180430 10:33:38 [Note] InnoDB: Initializing buffer pool, size = 4.0G
180430 10:33:38 [Note] InnoDB: Completed initialization of buffer pool
180430 10:33:38 [ERROR] InnoDB: .\ibdata1 can't be opened in read-write mode
180430 10:33:38 [ERROR] InnoDB: The system tablespace must be writable!
180430 10:33:38 [ERROR] Plugin 'InnoDB' init function returned error.
180430 10:33:38 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
180430 10:33:38 [Note] Plugin 'FEEDBACK' is disabled.
180430 10:33:38 [ERROR] Unknown/unsupported storage engine: innodb
180430 10:33:38 [ERROR] Aborting

180430 10:33:38 [Note] mysqld.exe: Shutdown complete

Solutions:

Open the command line with administrative privileges. (How to: How to Open the Command Prompt as Administrator in Windows 8 or 10)

Error!: SQLSTATE[HY000]: General error: 3 Error writing file 'xxx\Temp\xxx.tmp' (Errcode: 28 - No space left on device)

Example error message: Error!: SQLSTATE[HY000]: General error: 3 Error writing file 'C:\Windows\SERVIC~2\NETWOR~1\AppData\Local\Temp\MY2713.tmp' (Errcode: 28 - No space left on device)

Condition: Check the disk free space of mysql tmpdir folder

Solutions: Increase the free space of mysql tmpdir folder. Or change the mysql tmpdir folder with another hard disk drive contains more free space[14].

  • Check the current mysql tmpdir folder. Query the syntax SHOW VARIABLES LIKE 'tmpdir';.
    • On Win Os windows.png the default temporary folder[15] is %TMP% = %USERPROFILE%\AppData\Local\Temp.
    • On Linux Os linux.png the default temporary folder maybe is /tmp
  • Edit the mysql configuration file
[mysqld]
tmpdir=X:/temp
  • Restart the MySQL service

Validation

  • Query the syntax SHOW VARIABLES LIKE 'tmpdir'; to validate the modification of mysql configuration file.


errno 41 - Error dropping database

Message: Error dropping database (can't rmdir '.\TABLE_NAME', errno: 41) occurred when I executed DROP DATABASE `TABLE_NAME`;

Solution: phpmyadmin - Error in dropping a database in MySQL (can't rmdir '.\oro', errno: 41) - Stack Overflow


ERROR 1005 (HY000) at line xx: Can't create table 'TABLE_NAME' (errno: 28)

Solutions

ERROR 1006 (HY000): Can't create database 'DATABASE_NAME' (errno: 28)

Solutions

ERROR 1017 - Can't find file: '.\DATABASE\TABLE.frm' (errno: 22 - Invalid argument)

Message: [Err] 1017 - Can't find file: '.\DATABASE\TABLE.frm' (errno: 22 - Invalid argument)


Solutions

  • Check the existence of file DATABASE\TABLE.frm. If not, you may need to create the TABLE before executed the MySQL query.
  • Check the permission of file DATABASE\TABLE.frm or folder which the file located[16][17]. unverified

ERROR 1044 (42000): Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME'

Message: ERROR 1044 (42000): Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME'

pv file.sql.gz | gunzip | mysql -u USER -p --host=127.0.0.1 --default_character_set utf8 DATABASE_NAME

Solution:

  • Check the permission of specified user name & database name
$ mysql -u USER -p --host=127.0.0.1
Enter password:

mysql> use DATABASE_NAME

Message: mysqldump: Got error: 1044: Access denied for user 'USER'@'localhost' to database 'DATABASE_NAME' when doing LOCK TABLES

$ mysqldump -h 127.0.0.1 -u USER -p DATABASE_NAME TABLE_NAME > TABLE_NAME.sql

Solution:

  • Add the mysqldump option --skip-lock-tables if you cannot grant the user permissions [18].
$ mysqldump -h 127.0.0.1 -u USER -p --skip-lock-tables DATABASE_NAME TABLE_NAME > TABLE_NAME.sql

ERROR 1045 (28000): Access denied for user

Message: ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)

Solution:

  • Check the typo of user name.
  • Check the typo of password.
  • If you are using the console command, escape the password if it contains special characters e.g. mysql -u root -p'PASSWORD'[19]
  • You may need to delete the existing account setting and re-config again.

ERROR 1049 (42000): Unknown database

Message: ERROR 1049 (42000): Unknown database 'MY_DATABASE_p'

Solution:

  • Check the database 'MY_DATABASE_p' is exists
  • Check there are no TAB character after database name if you want to connect the database 'MY_DATABASE' when you are using console.

Error!: SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied

Message: Error!: SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied for user 'user'@'localhost' (using password: YES)

Solution:

  • If you executed the queryINTO OUTFILE, you need to grant the file permission e.g. GRANT FILE ON *.* TO 'user'@'localhost';[20][21].


Related issue: "Error!: SQLSTATE[HY000]: General error: 1290 The MySQL server is running with the --secure-file-priv option so it cannot execute this statement"[22]

Error!: SQLSTATE[42000]: Syntax error or access violation

Message: Error!: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ...

Solution:

ERROR 1052 - Column 'column_name' in field list is ambiguous

Message: Error Code: 1052. Column 'column_name' in field list is ambiguous

Cause: Since 'column_name' is present in 2 or more tables ...[23]

Solution: Remain only one table name 'column_name' OR adding the table name alias.

ERROR 1054 - Unknown column in 'where clause'

Message: [Err] 1054 - Unknown column 'xxx' in 'where clause'

Solution:

  1. check the column name 'xxx' if exists
  2. if the column name 'xxx' was computed by the User-Defined Variables. Enclosed the whole query into another parent derived query.
-- The query which met the error message: [Err] 1054 - Unknown column 'rank' in 'where clause'
SELECT semi.*, IF(semi.id = semi.prev, @rank := @rank +1, @rank := 1 ) AS `rank`   
FROM
(
        ...
) semi
WHERE semi.rank <= 10

Enclosed the whole query into another parent derived query.

SELECT final.*
FROM
(
        SELECT semi.*, IF(semi.id = semi.prev, @rank := @rank +1, @rank := 1 ) AS `rank`   
        FROM
        (
                ...
        ) semi
) final
WHERE final.rank <= 10

ERROR 1114 (HY000): The table `TABLE_NAME` is full

Possible solution

  • Because the hard disk of partition where MySQL Data Directory located is full or almost full, free some hard disk space[24].

ERROR 1205: Lock wait timeout exceeded; try restarting transaction

Solution: [25]

  1. SHOW OPEN TABLES WHERE in_use > 0;[26]
  2. SHOW [FULL] PROCESSLIST;[27]
  3. KILL <process id>;[28]

ERROR 1206: The total number of locks exceeds the lock table size

Message: Error Code: 1206. The total number of locks exceeds the lock table size

Current condition[29]:

  • Keywin SHOW VARIABLES LIKE 'innodb_buffer_pool_size';. If it returns 8388608, it means 8388608 bytes ≅ 8MB.

Solution:

  • Increase innodb_buffer_pool_size e.g. SET GLOBAL innodb_buffer_pool_size=402653184; (402653184 bytes ~ 400MB. Default value is 8MB.)
  • Reduce the size of query data

Further reading:

ERROR 1235: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Message: ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'.

Solution: Change the syntax of subquery to column_name BETWEEN start_number to end_number

Further reading:

ERROR 1267: Illegal mix of collations (utf8mb4_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'concat'

Error condition: Tried to concat different type of data e.g. CONCAT(string, int)

Solution: SELECT CONCAT(`string_column`, CONVERT(`int_column`, CHAR)) or SELECT CONCAT(`string_column`, CAST(`int_column` AS CHAR))[30][31]

ERROR 1690 - BIGINT UNSIGNED value is out of range

Message: MySQL error #1690 (BIGINT UNSIGNED value is out of range)

Solution [32][33]:

SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

ERROR 1813: Tablespace for table xxx exists

Message: ERROR 1813 Tablespace for table xxx exists.

Solution


ERROR 1827 (HY000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.

Wrong sql query as follows:

CREATE USER 'test'@'localhost' IDENTIFIED BY PASSWORD 'my_password';

Solution: (1) Check if the account was created or not

SELECT User,Host FROM mysql.user;

(2a) If the account was created, set the password for the account.

SET PASSWORD FOR 'test'@'localhost' = PASSWORD('my_password');

(2b) If the account was NOT created, re-create the account.

CREATE USER 'test'@'localhost' IDENTIFIED BY 'my_password';

references

ERROR 2002: Cannot connect: SQLSTATE[HY000] [2002]

Condition on Cygwin terminal of Windows:

$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)

$ mysql -h localhost -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)

Solution:

  • Change -h localhost to -h 127.0.0.1
$ mysql -h 127.0.0.1 -u root -p
  • If still not work, reboot the server and restart the MySQL service.

ERROR 2003 (HY000): Can't connect to MySQL server on 'ip'

ERROR 2003 (HY000): Can't connect to MySQL server on 'IP'

Solution:

  • Check if the IP is alive

ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' (111 "Connection refused")

Solution:

  • Check if the MySQL service is running or not[34]. If not, start the MySQL service.
  • Check the firewall rules

ERROR 2003 (HY000): Can't connect to MySQL server on 'IP' (116 "Connection timed out")

Solution:

References:

ERROR 2013: Lost connection to MySQL server during query

Message: Error Code: 2013. Lost connection to MySQL server during query

Condition: After executed the following query contains number of rows which exceed 1,000,000 rows, I met the error message 'Error Code: 2013. Lost connection to MySQL server during query'.

INSERT IGNORE INTO `target`.`table` SELECT * FROM `source`.`table`;

Solution:

  • Increase the settings of (1) DBMS connection keep-alive interval (in seconds) & (2) DBMS connection read time out (in seconds) on MySQL Workbench [35][36]. And remember to restart the MySQL Workbench after the settings were modified. e.g. The default setting of DBMS connection read time out (in seconds) is 30 seconds, you may increase to 6000 seconds (100 minutes).
  • Reduce the number of rows to reduce the execution time (1) by using LIMIT clause (2) or by splitting the query size e.g. MOD(column, 2) = 0 & MOD(column, 2) > 0 if the column is numeric.
INSERT IGNORE INTO `target`.`table` SELECT * FROM `source`.`table` LIMIT 0, 10000;

Navicat error: [Exp] OLE error 800A03EC

error message:

[Msg] [Exp] Export to - test.xlsx
[Err] [Row1048576] [Exp] OLE error 800A03EC
[Err] [Row1048577] [Exp] OLE error 800A03EC
[Err] [Row1048578] [Exp] OLE error 800A03EC
[Err] [Row1048579] [Exp] OLE error 800A03EC

cause:

  • Rows count of results exceed the limit of Microsoft Excel Worksheet size: 1,048,576 rows

solution:

  • LIMIT the rows of MySQL query

resolve insufficient hard disk space where mysql data located

Err: 解決 MySQL 資料庫所在硬碟空間不足的狀況

References

  1. Open the MySQL configuration file located: /Applications/XAMPP/xamppfiles/etc/my.cnf
    # The MySQL server
    [mysqld]
    user = mysql
    
  2. Using the CHMOD command effectively @ Computer Plumber
  3. mysql - Error: could not open single-table tablespace file .\scrapers\records.ibd - Stack Overflow
  4. MySQL Won't Start - InnoDB Corruption and Recovery. - Chepri
  5. 如何修改 MySQL 伺服器的資料目錄 (Windows Server 2008 R2)
  6. MySQL :: MySQL 8.0 Reference Manual :: 5.4.2 The Error Log
  7. php - how to check and set max_allowed_packet mysql variable - Stack Overflow
  8. MySQL :: MySQL 8.0 Reference Manual :: 6.2.2 Privileges Provided by MySQL
  9. php Invalid parameter number: parameter was not defined - Stack Overflow
  10. php - PDO error: " SQLSTATE[HY000: General error " When updating database - Stack Overflow]
  11. Save MySQL query results into a text or CSV file
  12. mysql - Can't create/write to file (Errcode: 22) - Stack Overflow
  13. mysql - Enable binary mode while restoring a Database from an SQL dump - Stack Overflow
  14. Changing the tmp folder of mysql - Stack Overflow
  15. Where is the Temporary folder? - Microsoft Community
  16. MySQL, copying tables files gives rise to "ERROR 1017 (HY000): Can't find file:" even though its there there - Stack Overflow
  17. ERROR 1017 (HY000): Can't find file - Percona Community
  18. mysql - skip-lock-tables and mysqldump - Stack Overflow
  19. escape characters - Escaping a password using mysqldump console - Super User
  20. MySQL :: MySQL 5.7 Reference Manual :: 6.2.1 Privileges Provided by MySQL
  21. MYSQL into outfile "access denied" - but my user has "ALL" access.. and the folder is CHMOD 777 - Stack Overflow
  22. database - How should I tackle --secure-file-priv in MySQL? - Stack Overflow
  23. mysql - Error Code: 1052 Column 'admin_id' in field list is ambiguous - Stack Overflow
  24. mysql - ERROR 1114 (HY000): The table is full - Stack Overflow
  25. mysql - Getting "Lock wait timeout exceeded; try restarting transaction" even though I'm not using a transaction - Stack Overflow
  26. MySQL :: MySQL 5.7 Reference Manual :: 13.7.5.24 SHOW OPEN TABLES Syntax
  27. MySQL :: MySQL 5.7 Reference Manual :: 13.7.5.29 SHOW PROCESSLIST Syntax
  28. MySQL :: MySQL 5.7 Reference Manual :: 13.7.6.4 KILL Syntax
  29. MySQL :: MySQL 8.0 Reference Manual :: 13.7.6.39 SHOW VARIABLES Syntax
  30. mysql - Cast int to varchar - Stack Overflow
  31. mysql字符集问题:Illegal mix of collations-每天让自己进步一点-51CTO博客
  32. MySQL :: MySQL 8.0 Reference Manual :: 11.2.6 Out-of-Range and Overflow Handling
  33. MySQL error #1690 (BIGINT UNSIGNED value is out of range) for UNIX_TIMESTAMP() - Stack Overflow
  34. HowTo: Find out If MySQL Is Running On Linux Or Not
  35. How can I execute SQL queries that take longer 99,999 seconds on MySQL Workbench? - Stack Overflow
  36. Error Code: 2013. Lost connection to MySQL server during query - Stack Overflow


Troubleshooting of ...

Template