我正在制作两个表,我希望personOnetableb中的person列引用table上的列a,但由于某种原因它不起作用。
我以下面的代码为例:
create table a(
person varchar(20),
cost varchar(10) not Null
)character set latin1
collate latin1_general_ci;
create table b(
personOne varchar(20),
personTwo varChar(2) not null,
key person_index (personOne),
CONSTRAINT C FOREIGN KEY (personOne) references a(person)
) engine=InnoDB default charset=latin1;
Run Code Online (Sandbox Code Playgroud)
它告诉我一个错误:
错误代码:3780。在外键约束“C”中引用列“personOne”和引用列“person”不兼容。
我试图将引擎设置为 InnoDB,但这没有用。我对这个问题进行了更多研究,但无法弄清楚如何解决它。
我正在尝试Play框架并使用2.2.0版本和Java版本.
我想使用MySQL作为数据库,我已经按照网站上的说明进行操作.我能够运行进化脚本,但我无法将任何内容保存到数据库中.在数据库中创建的表.我[PersistenceException: java.sql.SQLException: Connection is closed!]在尝试调用Ebean.save()方法时得到了,这是在我的控制器中.
我所做的是:
设置build.sbt并添加插件
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
"mysql" % "mysql-connector-java" % "5.1.18"
)
Run Code Online (Sandbox Code Playgroud)设置conf/application.conf
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/TLC?characterEncoding=UTF-8"
db.default.user=root
db.default.pass=secret
Run Code Online (Sandbox Code Playgroud)Ebean服务器
ebean.default="models.*"
Run Code Online (Sandbox Code Playgroud)创建控制器类包控制器;
import com.avaje.ebean.Ebean;
import play.*;
import play.data.Form;
import play.mvc.*;
import models.Bar;
import views.html.*;
public class Application extends Controller {
public static Result index() {
return ok(index.render("Your new application is ready."));
}
public static Result addBar() {
Bar bar = Form.form(Bar.class).bindFromRequest().get();
bar.save();
return redirect(routes.Application.index());
}
}
Run Code Online (Sandbox Code Playgroud)创建了一个表单
<form action="@routes.Application.addBar()" method="post">
<input name="name"/> …Run Code Online (Sandbox Code Playgroud)我需要一个基于密钥的Someclass值.键可以是字符串,布尔值或其他对象,这就是我使用Object作为键的原因.但是当对象是一个字符串时,我有一个问题.我有两个对象的字符串,它是等于,但它应该返回不同的值,因为它是一个不同的对象.
我的代码:
Object k = new String("action");
Object l = new String("action");
Hashtable<Object,SomeClass> map = new Hashtable<Object, SomeClass>();
map.put(k,anObject1);
map.put(l,anObject2);
map.remove(k); // it is removing both with k and l.
Run Code Online (Sandbox Code Playgroud)
当我检查两个对象的hashCode()时,它返回相同的值,这最终不是我想要的.
这有什么解决方案吗?我是否需要创建一个覆盖对象的Equals()的新类?但是,仍然是hashCode.:(问题是我需要一个hashCode,为不同的Object返回不同的值.
编辑:我这样做是因为我需要根据字符串的内容执行不同的操作,但操作将因map与键返回的值而不同.
更新:好的,这就是为什么我需要这个奇怪的事情.
我有一个玩家实例和3个陆地实例.所以我希望玩家能够耕种land1,land2,land3.如果玩家想要耕种土地,那个土地会形成一个正在运行的线程,告诉玩家移动到位置X,完成工作action,并wait()通过对象action,当另一个线程按照notify对象线程时action,土地然后自行修改.然后玩家根据对象制作动画action.我正在ArrayList<Position> destination和'ArrayList action`拥有它.也许你可以在这里阅读我的其他问题.
所以我想让动作取消.我通过传递action对象来实现它.我有一个按钮,显示每个动作,每个按钮将取消该动作.我也经过action这里.因此,当我点击按钮时,土地将获得notify.问题是我无法通过ArrayList<Position>删除目的地Action,因为它不知道索引在哪里.我是Java的新手,但是我一直在使用C++,所以我考虑使用Hashtables,因为它的O(1)与C++ O(log n)不同,并且因为我当前代码没有太多变化,所以很方便.
这可以理解吗?
示例是Logstash格式.他们在elasticsearch中格式化了他们的索引,[logstash-]YYYY.MM.DD每天都会使用一个新的索引.弹性搜索本身将由Kibana使用.它有什么理由被完成吗?有什么好处?