我想在mysql中创建一个新的db.我将utf8设置为默认字符集,但是当我尝试重新启动数据库时,mysql无法重新启动并发布以下提示:
试图启动服务器...无法重新连接到MySQL服务器.服务器无法启动.
插件'FEDERATED'已停用.
C:\ Program Files\MySQL\MySQL Server 5.5\bin\mysqld:未知变量'default-character-set = utf8'
中止
C:\ Program Files\MySQL\MySQL Server 5.5\bin\mysqld:关闭完成
我知道在取消默认字符集后,mysql会重启.但是如果我必须设置默认字符集,还有其他方法可以让mysql再次运行吗?
我正在尝试在我的本地Windows 10机器上使用MySQL设置WordPress.我收到这个错误:
建立数据库连接时出错这可能意味着wp-config.php文件中的用户名和密码信息不正确,或者我们无法联系localhost:3307上的数据库服务器.这可能意味着主机的数据库服务器已关闭.
我已经在这里检查:在wordpress上建立数据库连接时出错
root凭据登录到SQL Server Workbench ,这样就可以了我运行了这个查询select @@hostname,它给了我:DESKTOP-CFT2ESY
我尝试添加到wp-config.php(不是所有的同时):
define('DB_HOST', 'localhost:3307');
define('DB_HOST', 'localhost:8899');
define('DB_HOST', 'localhost');
define('DB_HOST', 'DESKTOP-CFT2ESY');
define('DB_HOST', '127.0.0.1');
这些都不起作用,只是更改了上面错误消息中的主机名字符串.
然后我补充说:
define('WP_ALLOW_REPAIR', true);
define('DB_CHARSET', 'utf8');
但这根本不会改变错误信息.
更新1
我跑了SHOW GLOBAL VARIABLES LIKE 'PORT';,我的服务器在端口3306上运行.在WorkBench中,我看到我的数据库已启动并正在运行.我还在root我的数据库模式中添加了用户的所有权限.我的用户Limit to hosts matching设置为localhost.
更新2
然后我运行了我在这里找到的PHP代码(我只是将root用户的密码更改为root用户的密码):
<?php
$host="localhost";
$root="root";
$root_password="rootpass";
$user='newuser';
$pass='newpass';
$db="newdb";
try {
$dbh = new PDO("mysql:host=$host", $root, $root_password);
$dbh->exec("CREATE DATABASE `$db`;
CREATE USER …Run Code Online (Sandbox Code Playgroud) 我见过的每一篇关于SO的帖子都表明运行以下SQL:
ALTER TABLE <tablename> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
除非我弄错了,否则它的问题在于它明确指定列排序规则,因此当你mysqldump数据库时你最终得到这样的东西:
`address` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`state` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL,
`zipcode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
Run Code Online (Sandbox Code Playgroud)
我的问题是..有没有办法将列排序规则转换为表或数据库默认值而不执行此操作?
例如,我有可能看起来像这样的表:
`address` varchar(150) DEFAULT NULL,
`city` varchar(100) DEFAULT NULL,
`state` varchar(2) COLLATE utf8_general_ci DEFAULT NULL,
`zipcode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
Run Code Online (Sandbox Code Playgroud)
我想要的是将所有列转换为utf8_unicode_ci(表/数据库默认值),但不要将每列显式设置为该排序规则,这样当我mysqldump转换后的表时,它看起来像这样:
`address` varchar(150) DEFAULT NULL,
`city` varchar(100) DEFAULT NULL,
`state` varchar(2) DEFAULT NULL,
`zipcode` varchar(10) DEFAULT NULL,
Run Code Online (Sandbox Code Playgroud)
在表创建语句末尾有一行,用于定义默认字符集和排序规则: ENGINE=InnoDB DEFAULT …
我昨天将MySQL更新到最新版本8.0.11,并尝试使用RMySQL连接到MySQL,但它无法正常工作,我找不到任何解决方案.
我的代码:
library(RMySQL)
con <- dbConnect(MySQL(), user="hello", password="hi", dbname = "webscrape", host="xx.xxx.xxx.xxx", port=xxxx)
Run Code Online (Sandbox Code Playgroud)
错误:
Error in .local(drv, ...) :
Failed to connect to database: Error: Can't initialize character set unknown (path: compiled_in)
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个简单的PHP页面来获取POST数据并获取sql查询然后打印结果.我正在使用mysql_fetch_array函数.
代码工作得很好,但响应是非Unicode文本,它返回如下内容:
?????ABC?????
Run Code Online (Sandbox Code Playgroud)
请注意,数据库排序规则是UTF8,并且存储的数据在phpMyAdmin中正确显示.我甚至在php页面中使用了这个META标签,但结果相同:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
Run Code Online (Sandbox Code Playgroud)
任何的想法?!
当我使用phpmyadmin看到存储在mysql数据库中的数据时,字符的存储方式与éàç一样,但是当我使用php在具有以下结构的html文档上显示这些数据时:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我得到了方形而不是重音字符,但是,我没有在静态内容上的任何重音字符的问题,这些字符尚未从同一页面中的mysql加载.
当我看到页面的源代码时,它们看起来是完全相同的!例如:
源代码上的部分静态数据显示为:
éçà
Run Code Online (Sandbox Code Playgroud)
mysql原始数据的一部分:
éçà
Run Code Online (Sandbox Code Playgroud)
我试过更换
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
同
<meta http-equiv="Content-Type" content="text/html; charset=windows-1552" />
Run Code Online (Sandbox Code Playgroud)
结果我得到一个固定的mysql,静态与正方形!
任何提示?
我们使用 Rails(版本 2.3.8,Ruby 版本 1.8.7,如果相关的话)已经有一段时间了,一切似乎都工作正常。我们的 MySQL 版本 5.5.20 DBMS 中的所有表都使用默认的 latin-1 字符集,我认为这很好,因为我们没有国际用户(尽管我们的 database.yml 实际上指定了 utf8...没有人注意到数据库之前实际上并没有这样出来)。
然而我刚刚发现,对于我们最后一个应用程序之一,该特定数据库中的表正在使用 utf8。我们现在正在添加到这个应用程序,并且在我们的开发机器和测试服务器上,新创建的表最终使用的字符集似乎是完全随机的。周五,我部署到我们的测试服务器,当时创建了两个表,其中一个使用 latin-1,另一个使用 utf8。在我的机器上它们都是 utf8。由于我们在这些表之间使用外键,所以这是一个问题。
我发现了大量有关修复字符集问题、从一种字符集迁移到另一种字符集等的信息,但没有任何信息可以解释为什么我们会突然遇到这个问题,以及为什么它会来回切换。
两个表的迁移是
create_table :charges, :id => false do |t|
t.string :id
t.decimal :amount
t.decimal :charge
t.text :description
t.string :charge_type_ref_id
t.string :business_id
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
和
create_table :charge_type_refs, :id => false do |t|
t.string :id
t.string :name
t.string :code
t.boolean :active
t.decimal :fee
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
我们的database.yml看起来像
development:
adapter: mysql
encoding: utf8
reconnect: false
database: database_development
pool: 5
username: …Run Code Online (Sandbox Code Playgroud) 我有一个需要支持表情符号的mysql列,这意味着将utf8列转换为utf8mb4.但是我的varchar(255)将不适合,只要列被索引(不唯一).
如何保留索引,并获得utf8mb4校对?
我试图将长度减少到191但不幸的是我的一些行更长并且我得到了这个错误:( #1406 - Data too long for column 'column_name' at row 33565由于我没有自动增量列并且不知道如何罚款,这不是非常有用第33565行).
我想通过我的Web应用程序插入MySQL数据库信息.我是在TomEE服务器上通过OpenJPA来做的,例如:
public void addLecturer(String name, String surname) {
Lecturer lect = new Lecturer(name,surname);
em.persist(lect);
}
Run Code Online (Sandbox Code Playgroud)
Lecturer是实体类.问题是应用程序以latin1编码插入数据.我想以UTF-8编码插入它.
当我在命令行终端中通过简单的MySQL命令插入数据时,我获得UTF-8编码的信息.
我看了这个,我看到character_set_server被设置为latin1,但我不知道这是问题还是如何改变它:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Run Code Online (Sandbox Code Playgroud)
编辑
我有同样的问题:
和
安装在本地计算机Docker和Kohana框架上。
我无法建立与数据库的连接。
发生错误:
Database_Exception [ 2 ]: mysqli_connect(): Server sent charset (255) unknown to the client. Please, report to the developers
Run Code Online (Sandbox Code Playgroud)
没事吗 datebase.php
return array
Run Code Online (Sandbox Code Playgroud)
('default'=> array('type'=>'MySQLi','connection'=> array('hostname'=>'mysql','database'=>'media','username'=>'root' ,'password'=>'root','persistent'=> FALSE,),'table_prefix'=>'','charset'=>'utf8mb4','caching'=> FALSE,