Bitnami database charset and collation issues ,site is created locally - mysql

I did made site on my localhost using Bitnami application,but when i export my database from PhpMyAdminm,and upload to hostting company they told me that they can’t import database because they get the error charset utf 8 collate utf8_general_ci,and i should change charset and collation in my bitnamidatabase.sql file in notepad,but when i opened i noticed that there is plenty lines of code that contains that so i give up,and i also noticed that in my phpmyadmin there is drop-down menu where i can change the charset ,in filed where are the info about database server is this Server charset: UTF-8 Unicode (utf8mb4) for the almost all files in that database collation is utf8mb4_unicode_520_ci,what should i do to fix that ,shoud i change type of collation ih the PhpMyAdmin or what?

Related

Upgrade to MySQL 8. Unknown character set index for field '255' received from server. Exception

The mysql5 db has been used to latin1 and latin1_general_ci character encoding settings, all tables are used also this character set.
After migration to mysql8(create and restore dump from mysql5-to-mysql8) the error: Unknown character set index for field '255' received from server. occurs when doing connection to db.
Why does it happens?, I suppose that it may be related with a fact that mysql8 uses utf8mb4 character set encoding as a default.
But utf8mb4 encoding is more wide than latin1 so it must to be support to migration from latin1(1Byte) to utf8mb4(4Bytes) not vice verse.
The changing character set of the db to latin1 and collation to latin1_swedish_ci doesn't take affect.
There is some mysql8 params:
SHOW VARIABLES LIKE 'char%';
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8mb4
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\
MySql8 connector driver is:
mysql-connector-java v. 3.1.14
I have this issue when I am executing scripts from my Java application. It is showing the same error as mentioned in the subject line.
The fix is(in my case,as we earlier use latin1): provide character encoding type in connection url.
?characterEncoding=latin1
Here is the list of available types which are used between java and mysql. This is the official documentation of java-mysql connector jar.
The only solution for this problem is
download the latest version of connector from the following website..
https://dev.mysql.com/downloads/connector/j/
When you go there there was a option to select operating system if you use windows then select the platform independent option then a download option appears ... download the zip file and extract it.Then go to your project and add this jar file into the libraries.So that's all your problem will be solved.
Hope this solution work for you...

Arabic encoding with tomcat and mysql

i have tomcat server and mysql
when insert data with Arabic it appears like '???? ????'
i change MySQL database with
ALTER DATABASE database name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
it did not work
and try in tomcat server.xml
change it to
Encouraging="UTF-8" on each Connector tag in the server.xml file
it still appears like '???? ??????'
can any one help me please

Non-English characters are not shown correctly in a mysql database inside phpMyAdmin (xampp)

My problem:
I'v been given a mysql database in a non-English language (Persian or Farsi, & if you don't know what kind of language is that, it's like Arabic). The records were entered through a web interface by php, using a windows machine. When I want to view the database using phpMyAdmin in xampp, the records look like this:
مرکز آموزش توپخانه نزاجا
If I edit the records in phpMyAdmin, I can add non-English (Persian) characters and they look fine, only the existing data is incorrectly displayed.
I've been provided with a .sql backup file as well, but when I open it in Notepad++ it doesn't look right either. I also tried "Encode in UTF-8" in Notepad++, but no use.
What I want:
A correct representation in phpMyAdmin or a healthy .sql file.
What I have:
xampp 1.8.2 (Apache 2.4.4, MySQL 5.5.32, PHP 5.4.16, phpMyAdmin 4.0.4), win 7 x64
The files I have:
.frm .MYD .MYI files (which I copied to xampp\mysql\data\mxpro), the .sql file i mentioned (mxpro.sql) & db.opt file containing these 2 lines:
default-character-set=utf8
default-collation=utf8_general_ci
I've found this line included inside the .sql file:
CHARSET=latin1
All of these files are inside a folder called 'mxpro' located in xampp\mysql\data\.
The collation of the table columns in the phpMyAdmin are: latin1_swedish_ci
What I have tried:
First of all, when I open the MYI file in Notepad++ and use "Encode in UTF-8", I can see most of the data sitting there in the correct format (Persian).
I've tried the following based on my research:
1) Changing whatever I see to utf8_general_ci, including: database (mxpro) collation (through operations), table collation (through operations), columns collation & server connection collation (in general settings)
2) Changing these server variables to utf8: character set client, character set connection, character set database, character set results, character set server & character set system.
3) Changing these server variables to utf8_unicode_ci: collation connection, collation database & collation server.
4) Adding this line:
#MySQL_Query("SET NAMES utf8");
to xampp\php\pear\MDB2\Driver\mysql.php after this line:
$connection = #call_user_func_array($connect_function, $params);
5) Adding these 3 lines to my.ini:
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
6) Adding these 2 lines:
mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =latin1;");
mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =latin1;");
to xampp\phpMyAdmin\libraries\dbi\mysql.dbi.lib.php, below the following line:
PMA_DBI_postConnect($link, $is_controluser);
7) Changing this:
'utf-8' => 'utf8',
to this:
'utf-8' => 'latin1',
in xampp\phpMyAdmin\libraries\select_lang.lib.php
despite my efforts, no outcome yet.
Thank you in advance.
On the phpMyAdmin wiki, there is an article explaining this issue:
http://wiki.phpmyadmin.net/pma/Garbled_data
I used this query on my db and it's worked perfectly
ALTER DATABASE yourDB CHARACTER SET utf8 COLLATE utf8_bin

Insert emoji character to MySQL DB from iOS app via Java

I'm working as a DBA on mysql 5.5.24 servers. Recently we faced one issue in production when one user tries to LogOn from iPhone and its phone name was having emoji character in itself.
Currently, in our system we have utf8 charset, which supports 3 bytes, but as its phone name was having emoji (4 bytes), the registration failed.
As mentioned in this link, we tried to reproduce same scenario in our development setup but still faces issues:
I tried after changing the charset of only that column in DB to utf8mb4 - No Success
I modified changing the charset of whole DB to utf8mb4 - No Success
Java Logs:
2013-01-08 11:21:54,547 ERROR [org.hibernate.util.JDBCExceptionReporter] (http-0.0.0.0) Incorrect string value: '\xF0\x9F\x98\x84' for column 'deviceDescription' at row 1
DB Logs:
insert into deviceDetails (deviceDescription, remoteStatus, deviceStatus) values ('?', 0, 1)
Note: Charset at Java side is still utf8. Can it be an issue?
See here. Also make sure that your connection character set is utfmb4.
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
Here is the query to insert:
insert into homeDetails (homeId, homeDescription, routerMac, routerSSID, arpMac, homeDetailTS)values (123,'des','mactest',convert ('Emot😄RS'using utf8mb4),'aprtest', now());

Missing UTF-8 charset in MAMP MySql

I am trying to run a MySql database with MAMP, but when I try to access the database, this error appears:
SQLSTATE[HY000] [2019] Can't initialize character set UTF-8 (path: /Applications/MAMP/Library/share/charsets/)
I ran "show variables" and found that the charset is set to UTF-8. I also looked in the path mentioned in the error and found that there was no file that said anything about UTF-8, so it appears that this charset is missing. Huh??? If it's looking for this charset, it must usually be present. So why is the charset missing? How can I get it there?
I had a similar problem. In my case I mistyped UTF-8 for establishing the connection.
Try to connect with the charset "utf8" instead of "UTF-8".
Apart from that I also have no UTF-8 charset file in that folder so I guess it's not the real problem.