我已经使用Ubuntu软件中心或命令提示符(apt-get install maraidb-server)从Ubuntu 15.04存储库安装了mariadb,但没有为root用户提供密码.现在我可以在没有密码的情况下在命令行上连接到mysql,但是使用Mysql-Workbench或python mysqldb库进行连接失败了"用户'root'对'@ localhost'进行访问被拒绝"消息
由于许可/商业使用原因,我们正在从MySql迁移到MariaDB.
我们已经成功地用MariaDB客户端jar替换了MySql连接器jar(第一次更改),现在尝试用MariaDB服务器替换MySql服务器而不更改数据文件.
我们所有的应用程序运行完美约8-12小时,之后我们看到以下异常:
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
Caused by:
org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:494)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:315)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:257)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:102)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
at $Proxy4.getMessageCountByStatus(Unknown Source)
at com.onmobile.cmfweb.monitoring.CmfMessagesMonitor.getMessageCounts(CmfMessagesMonitor.java:56)
at sun.reflect.GeneratedMethodAccessor625.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:270)
at com.onmobile.cmfshare.MethodInvockingBean.invoke(MethodInvockingBean.java:28)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:212)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:79)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
Caused by: java.sql.SQLNonTransientConnectionException: Could …
Run Code Online (Sandbox Code Playgroud) A.首先要做的事情:
B.我正在使用MySQL Workbench,因此不希望现在或将来都出现任何不兼容问题.
C.有人可以分享他们解决这个问题的经验(如果有的话)吗?
我昨天用Ubuntu 16.04,nginx,php7.0,MariaDB,nextcloud和外部DynDNS设置了我的第一个Ubuntu服务器(使用了这个教程:https://www.rosehosting.com/blog/install-nextcloud-on-ubuntu-16 -04 /).一切正常,但自从我今天重新启动服务器后,nextcloud只显示了一个空白页面.点击nginx,MariaDB和nextcloud的所有日志后,我发现mysql服务无法启动.所以运行service mysql start
,一切正常(从服务器和其他工作站调用nextcloud).我只是想知道终端没有"关闭"线路.就像它仍然在执行命令.大约5分钟后,线路"关闭"并显示消息
"mariadb.service的作业失败,因为超时超时.有关详细信息,请参阅"systemctl status mariadb.service"和"journalctl -xe".
出现(见下文).然后客户再次在nextcloud中得到一个空白页面.当我运行命令并关闭终端时,客户端也会立即访问,但在5分钟后将其松开.
我试着备份nextcloud sql然后运行apt-get purge --auto-remove mariadb-server
.然后,MariaDB安装步骤退出教程,导入备份sql而不是创建新的.没有改变一切.
接下来尝试是update-rc.d mysql defaults
和update-rc.d mysql enable
.但重新启动后再次只是空白页.只需启动服务手册,即可访问5分钟.
我也尝试了BUM - BootUpManager,但服务似乎是可行的.我看到你也可以手动启动服务.所以尝试用mysql和惊喜:nextcloud可用5分钟,而BUM只是挂起:D
我发现mariadb.com/kb/en/mariadb/starting-and-stopping-mariadb-automatically/但是没有尝试过,因为看起来还有其他错误.
root@s1:~# systemctl status mariadb.service
:
\u25cf mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset:
Drop-In: /etc/systemd/system/mariadb.service.d
\u2514\u2500migrated-from-my.cnf-settings.conf
Active: failed (Result: timeout) since Di 2016-12-06 14:52:51 CET; 55s ago
Process: 3565 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WS
Process: 3415 ExecStartPre=/bin/sh -c [ …
Run Code Online (Sandbox Code Playgroud) 我在宅基地虚拟机(流浪汉)中使用最新版本的laravel(5.1).
我将我的项目连接到本地mariaDB服务器,其中我有一些表和2个db-view.
由于我只在db-view表上做了一些select,所以我随机收到了这个错误:
一般错误:1615准备好的陈述需要重新准备
从今天起,我只在db视图上选择时才会出现此错误.如果我打开我的phpMyAdmin并进行相同的选择它会返回正确的结果.
我试图打开php artisan tinker
并选择db-view的一条记录,但它返回相同的错误:
// Select one user from user table
>>> $user = new App\User
=> <App\User #000000006dc32a890000000129f667d2> {}
>>> $user = App\User::find(1);
=> <App\User #000000006dc32a9e0000000129f667d2> {
id: 1,
name: "Luca",
email: "luca@email.it",
customerId: 1,
created_at: "2015-08-06 04:17:57",
updated_at: "2015-08-11 12:39:01"
}
>>>
// Select one source from Source db-view
>>> $source = new App\Source
=> <App\Source #000000006dc32a820000000129f667d2> {}
>>> $source = App\Source::find(1);
Illuminate\Database\QueryException with message 'SQLSTATE[HY000]: General error: 1615 Prepared statement needs …
Run Code Online (Sandbox Code Playgroud) 在Hibenate我正在使用MariaDB,但我找不到MariaDB的方言类名.
在Hibernate中,MySQL5方言的名字是
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
Run Code Online (Sandbox Code Playgroud)
对于Oracle 10g
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
Run Code Online (Sandbox Code Playgroud)
MariaDB的方言类名是什么?
背景:我下载了我的WordPress站点数据库的*.sql备份,并将旧数据库表前缀的所有实例替换为新的(例如,从默认wp_
值为类似asdfghjkl_
).
我刚刚了解到WordPress在数据库中使用了序列化的PHP字符串,而我所做的将与序列化字符串长度的完整性混淆.
问题是,我在学习之前删除了备份文件(因为我的网站仍然正常运行),并且安装了许多插件.所以,我无法回复,因此我想知道两件事:
如果可能的话,我该如何解决这个问题呢?
这会导致什么样的问题?
(这篇文章指出,例如,一个WordPress博客可能会丢失它的设置和小部件.但这似乎并没有发生在我身上,因为我的博客的所有设置仍然完好无损.但我不知道什么可以在内部被打破,或者它将来会出现什么问题.因此这个问题.)
我正在考虑实现一个集群服务器.在过去的几年里,我目前使用MySQL作为我的应用程序,但在过去的一年里,我已经阅读了很多关于MySQL将会发生什么以及MariaDB的优势和改进的不确定性.
如果它是单个服务器,基于我读过的所有东西,我现在就切换到MariaDB,所以我不需要在以后再做,但因为它是一个集群,我不知道是否应该切换到MariaDB Galera吧现在或等待一段时间才更成熟.
有没有人有实施这些解决方案以及这些实现的"优点"和"缺点"的经验?
我担心的是,通过改进,MariaDB将在一年或两年后不会完全替代,因为它改进并增加了新功能,所以现在是改用MariaDB的更好时机.
像查询为什么SELECT (@sum:=(@var:=@sum)+some_table.val)...
自动转换(@var:=@sum)
到整数MySQL的≤5.5为DECIMAL
型some_table.val
和地板它DOUBLE/FLOAT
?更改了哪些功能以允许5.6中的预期行为?
请考虑下表:
CREATE TABLE t (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
sum_component FLOAT
);
INSERT INTO t (sum_component) VALUES (0.5), (0.6), (0.4), (0.5);
Run Code Online (Sandbox Code Playgroud)
我正在设计一个累积和查询,它获取id
累积和大于某个值的条目.通常,此查询符合条例草案:
SELECT t.id,
@cumulative_sum
FROM t
CROSS JOIN (SELECT @cumulative_sum:=0) a
WHERE (@cumulative_sum:=@cumulative_sum+t.sum_component) > 1.3
ORDER BY id ASC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
...但我碰巧还需要在所选条目之前存储累积总和以及以后的计算,并且cumulative_sum
从该查询中不返回预期结果,重复计算最后一个条目.在这种情况下,我希望此查询设置一个存储value 1.1
(0.5 + 0.6
)的变量,而不必进行额外的数学运算.
如果我在增量步骤中指定@cumulative_sum
to 的旧值@another_variable
,我应该能够做到这一点.
SELECT t.id,
@cumulative_sum …
Run Code Online (Sandbox Code Playgroud) 在Debian Jessie中,我安装了MariaDB服务器10.0.30,并尝试增加最大密钥长度.AFAIU取决于innodb_large_prefix
启用的配置参数.根据文档,它还需要barracuda
文件格式和innodb_file_per_table
.在config中设置并重新启动服务器后,我在客户端看到,这些参数设置正确:
> SHOW GLOBAL VARIABLES LIKE 'innodb_large%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| innodb_large_prefix | ON |
+---------------------+-------+
1 row in set (0.00 sec)
> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | OFF |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)
> SHOW GLOBAL VARIABLES LIKE …
Run Code Online (Sandbox Code Playgroud)