MySQL: Difference between revisions

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Links: official doc on recovery (and backup)
tidied up by moving stuff to subpages
Line 1: Line 1:
==Navigation==
<hide>
<section begin=navbar />{{#lst:software|navbar}}: [[database software|databases]]: [[database engines|engines]]: [[MySQL]]<section end=navbar />
[[page type::article]]
 
[[thing type::software]]
==Overview==
[[software type::database engine]]
[[license::libre/open source]]
</hide>
==About==
[[MySQL]] is a [[FOSS]] database engine and server. It fills roughly the same niche as [[Microsoft SQL Server]].
[[MySQL]] is a [[FOSS]] database engine and server. It fills roughly the same niche as [[Microsoft SQL Server]].


The MySQL package (at least in Linux) comes with a number of helper utilities, including [[MySQL Administrator]] and [[MySQL Query Browser]]. The Administrator utility is useful for making backups, and the Query Browser serves as a front-end for interacting with databases.
The MySQL package (at least in Linux) has a number of helper utilities available, including [[MySQL Workbench]] (a combination of the former [[MySQL Administrator]] and [[MySQL Query Browser]] applications).
==Articles==
==Articles==
* '''Related'''
* '''Related'''
Line 15: Line 18:
** [[MySQL Administrator]]
** [[MySQL Administrator]]
** [[MySQL Query Browser]]
** [[MySQL Query Browser]]
 
* [[/notes]]: disorganized information
==Criticisms==
* [[/archive]]: older stuff that probably is no longer applicable
MySQL has been criticized by at least one user of lacking production-quality features, with version 5.0 only just starting to add them, where as other [[FOSS]] alternatives such as [[PostgreSQL]] had such features in their very earliest versions. MySQL has also been criticized for bad performance, e.g. locking entire tables when it only should have locked a row, as well as general incompatibility (Editor's note: with what?).
 
* '''Wikipedia''': [[Wikipedia:MySQL#Criticisms of MySQL|Criticisms of MySQL]]
* '''2007-05-26''' [http://developers.slashdot.org/comments.pl?sid=236249&cid=19280725 Re:MySQL the db for people who don't understand db]
 
==Files & Folders==
The [http://dev.mysql.com/doc/refman/5.1/en/installation-layouts.html Installation Layouts] manual page gives a listing of folders created by a mysql installation, but does not list all files (some of them added to existing folders) upon which a working installation is dependent.
 
===RPM distributions===
(The Debian/Ubuntu setup is similar; folders marked with * indicate those found in Ubuntu and not given in the documentation.)
{|
|-
! Directory || Contents of Directory
|-
| */etc/init.d/mysql || daemon start/stop/restart script
|-
| */etc/mysql || [[my.cnf]]: configuration file; also other configuration files
/etc/mysql/conf.d/
|-
| /usr/bin || Client programs and scripts
|-
| /usr/include/mysql || Include (header) files
|-
| /usr/lib/mysql || Libraries
|-
| /usr/sbin || The mysqld server
|-
| /usr/share/info || Manual in Info format
|-
| /usr/share/man || Unix manual pages
|-
| /usr/share/mysql || Error message and character set files; *also scripts
|-
| /usr/share/sql-bench || Benchmarks
|-
| /var/lib/mysql || Log files, databases
|}
 
==Working Notes==
===SQL error messages===
* 1271 - Illegal mix of collations for operation 'concat'
** http://www.issociate.de/board/post/274187/CONCAT_with_IF.html
** When the problem expression was a CONCAT(...) function, doing CAST(CONCAT(...) AS BINARY) fixed it.
===munged MySQL installation===
If you can't reinstall ''or'' remove MySQL because the "{{faint|/etc/init.d/}}mysql start" command fails during (un)installation, check for rogue "mysql" and "mysql-safe" processes which aren't getting stopped by "{{faint|/etc/init.d/}}mysql stop".
===debian-start===
The /etc/mysql/debian-start file appears to contain a minor error, at least on the MySQL install I just reinstalled. It sets the variable MYCHECK, and then tries to invoke the command to which it is set by saying just "mycheck;", resulting in the error message "/etc/mysql/debian-start: line 17: mycheck: command not found" although the mysql daemon is apparently restarted successfully. To fix the error, change "mycheck;" to "$mycheck;". (This also has the benefit of actually running whatever command MYCHECK is set to, which is typically some kind of integrity check to help keep your databases from becoming corrupted.)
===external connections===
If mysql refuses to respond to connection attempts from anywhere but the local machine, you need to edit /etc/mysql/my.conf and comment out the following line:
bind-address  = 127.0.0.1
: and then restart mysqld.
===miscellaneous===
To restart the mysql [[daemon]] (mysqld) when you don't have a user with SHUTDOWN privileges but you do have system root:
sudo /etc/init.d/mysql restart
===Command-line Client Example===
'''editing a blank table''': To work around the Query Browser bug (fixed in the latest version) which won't let you edit a blank table, create the first entry using MySQL's command line interface:
 
woozle@camilla:~ $ mysql -h<u>yourhost</u> -u<u>yourusername</u> -p<u>yourpassword</u>
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12531702 to server version: 4.1.13-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use <u>yourdatabasename</u>
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> INSERT INTO <u>tablename</u> () VALUES();
Query OK, 1 row affected (0.05 sec)
mysql>
 
...where <u>yourhost</u> is the name of your MySQL server, and can be anything that can resolve to an IP address, e.g. localhost, yourmachinename, yourserverdomain.com, or an actual IP address (I think).
===SQL Examples===
'''creating a table''': If the Query Browser crashes when you try to create or edit a table, use the command line interface to create the table:
'''create table''' <u>table_name</u> (<u>field_name</u> <u>field_type</u>, <u>field_name</u> <u>field_type</u>{{optargs|, ...}});
Example:
<sql>create table example (key varchar(255));</sql>
* More examples: [[importing data into ZenCart]]
* Documentation: [http://dev.mysql.com/doc/refman/5.1/en/create-table.html CREATE TABLE Syntax]
 
'''making a field autonumbered''':
'''ALTER TABLE''' <u>tablename</u> '''MODIFY''' <u>fieldname</u> <u>fieldtype</u> '''AUTO_INCREMENT''';
Example:
<sql>ALTER TABLE Tracks_Queued MODIFY id INTEGER AUTO_INCREMENT;</sql>
 
'''changing the name of a field (column)''':
'''ALTER TABLE''' <u>tablename</u> '''CHANGE''' <u>oldname</u> <u>newname</u> <u>new_fieldtype</u>;
This also changes the field's definition, if new_fieldtype is not the same as the field's prior definition.
 
Example:
<sql>ALTER TABLE cat_items CHANGE isInStock qtyInStock INT COMMENT 'number of pieces currently in stock (calculated from stock table)';</sql>
* Documentation: [http://dev.mysql.com/doc/refman/5.1/en/alter-table.html ALTER TABLE Syntax]
 
==Links==
==Links==
===Reference===
===Reference===

Revision as of 11:12, 16 November 2016

<hide> page type::article thing type::software software type::database engine license::libre/open source </hide>

About

MySQL is a FOSS database engine and server. It fills roughly the same niche as Microsoft SQL Server.

The MySQL package (at least in Linux) has a number of helper utilities available, including MySQL Workbench (a combination of the former MySQL Administrator and MySQL Query Browser applications).

Articles

Reference

How To

News