MySQL: Cloning a MySQL database on the same MySql instance

As the manual says in Copying Databases you can pipe the dump directly into the mysql client: If you’re using MyISAM you could copy the files, but I wouldn’t recommend it. It’s a bit dodgy. Integrated from various good other answers Both mysqldump and mysql commands accept options for setting connection details (and much more), like: Also, if the new database is not … Read more

CAST to DECIMAL in MySQL

From MySQL docs: Fixed-Point Types (Exact Value) – DECIMAL, NUMERIC: In standard SQL, the syntax DECIMAL(M) is equivalent to DECIMAL(M,0) So, you are converting to a number with 2 integer digits and 0 decimal digits. Try this instead:

Differences between utf8 and latin1

UTF-8 is prepared for world domination, Latin1 isn’t. If you’re trying to store non-Latin characters like Chinese, Japanese, Hebrew, Russian, etc using Latin1 encoding, then they will end up as mojibake. You may find the introductory text of this article useful (and even more if you know a bit Java). Note that full 4-byte UTF-8 support was only introduced in MySQL … Read more

select * from table where column = something or, when unavailable, column = something else

You can provide a custom ordering, then take the first row, like this: Explanation: The inner select’s order by field(LOCALE, ‘ge’, ‘_’) gets you the rows in the order you define – in this case German first if it exists, then English (you could add more languages to the list). The “trick” here is using mysql’s “non-standard” GROUP … Read more

Difference between EXISTS and IN in SQL?

The exists keyword can be used in that way, but really it’s intended as a way to avoid counting: This is most useful where you have if conditional statements, as exists can be a lot quicker than count. The in is best used where you have a static list to pass: When you have a table in an in statement it makes more sense to use … Read more

Arithmetic overflow error converting varchar to data type numeric. ’10’ <= 9.00

This generates an Arithmetic Overflow because it is trying to implicitly cast the Val column to a NUMERIC(3,2), which naturally will overflow on a 2-digit value like 10. It’s using NUMERIC(3,2) as the target type and size because that is the smallest numeric that 9.00 appears to fit into. The solution, of course, is to use explict CASTing instead … Read more

MySQL error: Unknown column in ‘where clause’

backticks (`) are used for identifiers, like table names, column names, etc. Single quotes(‘) are used for string literals. You want to do: Or, to be more explicit: When there is no chance of ambiguity, and when table/column names do not have special characters or spaces, then you can leave the ` off. Here is … Read more