我已经在互联网上搜寻了此问题的答案,但似乎没人能找到它。
因此,我在PHP版本5.6.36和MySQL版本5.6.39上安装了FuelPHP,尝试使用Auth :: create_user()创建新用户时出现错误。错误如下:
燃料\核心\数据库异常[2014(2014)]: 命令不同步;您现在不能运行此命令
我已经正确配置了所有db.php文件(我相信),因为FuelPHP能够访问我的SQL Server并在其中创建表。这是我的控制器中导致此错误的代码:
public class ViewerNewsFragment1 extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
private static final String ARG_COLUMN_COUNT = "column-count";
private int mColumnCount = 1;
private OnListFragmentInteractionListener mListener;
private static final String ARG_PARAM1 = "id";
// TODO: Rename and change types of parameters
private Integer mParam1;
private String finalUrl;
private ViewerNewsRecyclerViewAdapter adapter;
private SwipeRefreshLayout swipeView;
private TextView connectionError;
private int imageHolder;
private NewsHelper newsHelper;
private String SENT_ = "SMS_SENT_SUSCRIPTION_";
private String DELIVERED_ = "SMSDELIVERED_SUSCRIPTION_";
private BroadcastReceiver sendBroadcastReceiver;
private BroadcastReceiver deliveryBroadcastReceiver;
List<News> news = new ArrayList<>();
private boolean flag = false;
OkHttpClient client;
private boolean isAlreadyRefresh;
public ViewerNewsFragment1() {
}
public static ViewerNewsFragment1 newInstance(int columnCount, Integer id) {
ViewerNewsFragment1 fragment = new ViewerNewsFragment1();
Bundle args = new Bundle();
args.putInt(ARG_COLUMN_COUNT, columnCount);
args.putInt(ARG_PARAM1, id);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
newsHelper = new NewsHelper(getActivity());
if (getArguments() != null) {
mColumnCount = getArguments().getInt(ARG_COLUMN_COUNT);
mParam1 = getArguments().getInt(ARG_PARAM1);
DummyContent.DummyItem item = DummyContent.ITEMS.get(new Integer(mParam1) - 1);
finalUrl = item.url;
imageHolder = item.smallimage;
}
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_viewer_news_list, container, false);
// Set the adapter
Context context = view.getContext();
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_news);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
adapter = new ViewerNewsRecyclerViewAdapter(news, mListener, imageHolder, newsHelper.getNewsDao());
recyclerView.setAdapter(adapter);
swipeView = (SwipeRefreshLayout) view.findViewById(R.id.swipe);
swipeView.setOnRefreshListener(this);
swipeView.setProgressViewOffset(false, 0,
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics()));
connectionError = (TextView) view.findViewById(R.id.connection_error);
setRetainInstance(true);
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.acerca_toolbar);
toolbar.setBackgroundColor(Color.parseColor("#f2f2f2"));
ImageView iv = (ImageView) toolbar.findViewById(R.id.iconToShow);
toolbar.getContext().setTheme(R.style.AppTheme2);
int img_bar = R.drawable.appbar_cubadebate;
SharedPreferences preferences = ((ViewerActivity) mListener).getSharedPreferences("client_data", Context.MODE_WORLD_WRITEABLE);
SharedPreferences.Editor ed = preferences.edit();
if (mParam1.equals(1)) {
ed.putInt("cubadebate", 0);
ed.commit();
img_bar = R.drawable.appbar_cubadebate;
} else if (mParam1.equals(2)) {
ed.putInt("granma", 0);
ed.commit();
img_bar = R.drawable.appbar_granma;
} else if (mParam1.equals(3)) {
ed.putInt("prela", 0);
ed.commit();
img_bar = R.drawable.appbar_pl;
}
iv.setImageResource(img_bar);
isAlreadyRefresh = false;
setHasOptionsMenu(true);
Dao<News, Integer> dao = newsHelper.getNewsDao();
try {
QueryBuilder<News, Integer> builder = newsHelper.getNewsDao().queryBuilder();
builder.where().eq("author", mParam1.toString());
builder.limit(20);
builder.orderBy("newsDate", false); // true for ascending, false for descending
news = dao.query(builder.prepare());
}catch (Exception e){
e.printStackTrace();
}
adapter.setmValues(news);
adapter.notifyDataSetChanged();
return view;
}
private void fetchNews() {
fetchInternalNews();
if (isNetworkAvailable()) {
Cache cache = new Cache(getContext().getCacheDir(), Integer.MAX_VALUE);
client = new OkHttpClient.Builder()
.addNetworkInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder().header("Cache-Control", "max-age=" + (60 * 60 * 24 * 365)).build();
}
})
.cache(cache)
.build();
Parser parser = new Parser();
parser.execute(finalUrl);
parser.onFinish(new Parser.OnTaskCompleted() {
@Override
public void onTaskCompleted(final ArrayList<Article> list) {
new LongOperation().execute(list);
}
@Override
public void onError() {
if (getActivity() != null)
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
swipeView.setRefreshing(false);
connectionError.setVisibility(View.VISIBLE);
isAlreadyRefresh = false;
}
});
}
});
} else {
swipeView.setRefreshing(false);
Toast.makeText(getContext(), "No tiene conexión a Internet. Active la Wi-Fi o los datos móviles, y vuelva a intentarlo.", Toast.LENGTH_LONG).show();
}
}
private class LongOperation extends AsyncTask<List<Article>, Void, String> {
@Override
protected String doInBackground(List<Article>... lists) {
swipeView.setRefreshing(true);
GoScrapp(lists[0]);
return "Executed";
}
@Override
protected void onPostExecute(String result) {
adapter.notifyDataSetChanged();
isAlreadyRefresh = true;
swipeView.setRefreshing(false);
}
}
public void GoScrapp(List<Article> list){
Dao<News, Integer> dao = newsHelper.getNewsDao();
News t = new News();
List<News> news_list = new ArrayList<>();
try {
QueryBuilder<News, Integer> builder = newsHelper.getNewsDao().queryBuilder();
builder.where().eq("author", mParam1.toString());
builder.limit(20);
builder.orderBy("newsDate", false); // true for ascending, false for descending
news_list = dao.query(builder.prepare());
}catch (Exception e){
e.printStackTrace();
}
boolean esta = false;
for (Article article : list) {
if(!news_list.isEmpty())
for (News item : news_list) {
if(item.getLink().equals(article.getLink())){
esta = true;
}
}else esta = false;
if(!esta) {
Foo foo = new Foo(article);
Thread th = new Thread(foo);
try {
th.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private void fetchInternalNews() {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnListFragmentInteractionListener) {
mListener = (OnListFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnListFragmentInteractionListener");
}
}
@Override
public void onResume() {
super.onResume();
onRefresh();
//Todo:Puse este valor en true, estaba en false
isAlreadyRefresh = true;
}
@Override
public void onDetach() {
super.onDetach();
}
@Override
public void onRefresh() {
if (!isAlreadyRefresh) {
swipeView.setRefreshing(true);
swipeView.postDelayed(new Runnable() {
@Override
public void run() {
fetchNews();
isAlreadyRefresh = true;
adapter.setmValues(news);
}
}, 1000);
} else
swipeView.setRefreshing(false);
}
public interface OnListFragmentInteractionListener {
void onListFragmentInteraction(Integer id);
}
private boolean CanSuscribe(){
NewsHelper helper = new NewsHelper(getContext());
SuscriptionRequest sr_object;
Date today = new Date();
boolean result;
try {
if(!helper.getSuscriptionRequestDao().queryForEq(SuscriptionRequest.FUENTE, mParam1).isEmpty())
{
sr_object = helper.getSuscriptionRequestDao().queryForEq(SuscriptionRequest.FUENTE, mParam1).get(0);
//get the date of usscription
Date date = sr_object.getFecha();
Calendar calendar = new GregorianCalendar(/* remember about timezone! */);
calendar.setTime(date);
calendar.add(Calendar.DATE, 30);
date = calendar.getTime();
result = today.after(date);
} else {
result = true;
}
}catch (SQLException e) {
Log.e("ERROR Saving SR", e.getMessage());
result = false;
}
return result;
}
private void SaveSuscriptionRequest(){
NewsHelper helper = new NewsHelper(getContext());
SuscriptionRequest sr = new SuscriptionRequest();
try{
if(!helper.getSuscriptionRequestDao().queryForEq(SuscriptionRequest.FUENTE, mParam1).isEmpty()) {
sr.setFecha(new Date());
sr.setFuente(mParam1);
helper.getSuscriptionRequestDao().create(sr);
} else {
sr = helper.getSuscriptionRequestDao().queryForEq(SuscriptionRequest.FUENTE, mParam1).get(0);
sr.setFecha(new Date());
helper.getSuscriptionRequestDao().update(sr);
}
} catch (SQLException e) {
Log.e("ERROR Saving SR", e.getMessage());
}
}
public void sendMessage(String phoneNumber, String message) {
final Activity mContext = (Activity) mListener;
PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0, new Intent(SENT_), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(mContext, 0, new Intent(DELIVERED_), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
@Override
public void onPause() {
super.onPause();
if(flag) {
myOnDestroy();
}
}
public class Foo implements Runnable {
private volatile String value;
private String url;
private Article article;
public Foo(Article article){
this.url = article.getLink();
this.article = article;
}
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
OkHttp3Downloader okHttpDownloader = new OkHttp3Downloader(client);
Picasso picasso = new Picasso.Builder(getContext()).downloader(okHttpDownloader).build();
try {
Document doc = Jsoup.connect(url).get();
Elements links = new Elements();
Elements img = new Elements();
String img_url = "";
switch (mParam1){
case 1:
links = doc.select("div[class=note_content] > p");
img = doc.select("div[id^=\"attachment_\"] > img");
if(!img.isEmpty())
{
img_url = img.first().attr("srcset").split(" ")[0];
if(img_url.isEmpty())
img_url = img.first().attr("src");
if(!img_url.isEmpty()) picasso.with(getContext()).load(img_url).fetch();
}
break;
case 2:
links = doc.select("div[class=story-body-text story-content] > p");
img = doc.select("div[class=image] > img");
if(!img.isEmpty()){
img_url = "http://www.granma.cu"+img.first().attr("src");
Log.e("URL", img_url);
if(!img_url.isEmpty()) picasso.with(getContext()).load(img_url).fetch();
}
break;
case 3:
links = doc.select("div[class=fullNewsFulltext]");
img = doc.select("div[class=fullNewsIntrotext] img");
if(!img.isEmpty()){
img_url = "http://prensa-latina.cu"+img.first().attr("src");
Log.e("URL", img_url);
if(!img_url.isEmpty()) picasso.with(getContext()).load(img_url).fetch();
}
break;
}
for (Element link : links) {
builder.append(link.text()).append("\n");
}
value = article.getLink();
Dao<News, Integer> dao = newsHelper.getNewsDao();
News t = new News();
String author = "";
t.setTitle(article.getTitle());
t.setAuthor(mParam1.toString());
t.setDescription(article.getDescription());
t.setLink(article.getLink());
t.setCompleteDescription(builder.toString());
t.setImage(article.getImage());
t.setImage_link(img_url);
if (article.getPubDate() != null)
t.setNewsDate(article.getPubDate());
else {
final SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
try {
t.setNewsDate(sf.parse(sf.format(new Date())));
} catch (Exception e) {
Log.e("ERROR FECHA", e.getMessage());
}
}
try {
List<News> existing = dao.queryForEq("title", t.getTitle());
if (existing.size() == 0) {
dao.create(t);
news.add(t);
Log.e("ERROR FECHA", "ADD"+t.getTitle());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// Stuff that updates the UI
adapter.notifyItemInserted(news.size() - 1);
// adapter.notifyDataSetChanged();
// swipeView.setRefreshing(true);
}
});
// adapter.notifyDataSetChanged();
}
} catch (SQLException e) {
Log.e("ERROR", e.getMessage());
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
}
public String getValue() {
return value;
}
}
public void myOnDestroy(){
final Activity mContext = (Activity) mListener;
mContext.unregisterReceiver(sendBroadcastReceiver);
mContext.unregisterReceiver(deliveryBroadcastReceiver);
}
}
在加载索引页时调用load_tables()函数。 DBUtil :: create_table()查询执行没有问题,但是当调用Auth :: create_user()时,它将失败,并出现上述错误。
也:如果我使用在示例中已注释掉的DB:insert(),它将执行而不会出现问题,并将新记录插入表中。但是,我需要使用Auth :: create_user()才能进行身份验证。